diff --git a/manifests/nginx_ingress_http.yaml b/manifests/nginx_ingress_http.yaml
index 91440fb7a2bf417d7a020b38070570f2ed3da8df..2b63e5c1c5ae29debecc7f0aad6ca3d93af47421 100644
--- a/manifests/nginx_ingress_http.yaml
+++ b/manifests/nginx_ingress_http.yaml
@@ -43,7 +43,7 @@ spec:
                 name: nbiservice
                 port:
                   number: 8080
-          - path: /()(debug-api/.*)
+          - path: /()(tfs-api/.*)
             pathType: Prefix
             backend:
               service:
diff --git a/my_deploy.sh b/my_deploy.sh
index 212dd7bd6158ba5cbb86b948a44c848e3ff92433..deb0d85625bfc6ce46f268b05d382ccf55ba34b5 100755
--- a/my_deploy.sh
+++ b/my_deploy.sh
@@ -29,7 +29,14 @@ export TFS_COMPONENTS="context device pathcomp service slice nbi webui load_gene
 #export TFS_COMPONENTS="${TFS_COMPONENTS} bgpls_speaker"
 
 # Uncomment to activate Optical Controller
-#export TFS_COMPONENTS="${TFS_COMPONENTS} opticalcontroller"
+#   To manage optical connections, "service" requires "opticalcontroller" to be deployed
+#   before "service", thus we "hack" the TFS_COMPONENTS environment variable prepending the
+#   "opticalcontroller" only if "service" is already in TFS_COMPONENTS, and re-export it.
+#if [[ "$TFS_COMPONENTS" == *"service"* ]]; then
+#    BEFORE="${TFS_COMPONENTS% service*}"
+#    AFTER="${TFS_COMPONENTS#* service}"
+#    export TFS_COMPONENTS="${BEFORE} opticalcontroller service ${AFTER}"
+#fi
 
 # Uncomment to activate ZTP
 #export TFS_COMPONENTS="${TFS_COMPONENTS} ztp"
diff --git a/proto/context.proto b/proto/context.proto
index 8a6b019dc99863da32631425d954afbaf167f1b7..a4cc4c6a797a30a6ad817f30891566abc6cea0c1 100644
--- a/proto/context.proto
+++ b/proto/context.proto
@@ -211,7 +211,7 @@ enum DeviceDriverEnum {
   DEVICEDRIVER_XR = 6;
   DEVICEDRIVER_IETF_L2VPN = 7;
   DEVICEDRIVER_GNMI_OPENCONFIG = 8;
-  DEVICEDRIVER_FLEXSCALE = 9;
+  DEVICEDRIVER_OPTICAL_TFS = 9;
   DEVICEDRIVER_IETF_ACTN = 10;
   DEVICEDRIVER_OC = 11;
 }
diff --git a/scripts/run_tests_locally-nbi-debug-api.sh b/scripts/run_tests_locally-nbi-tfs-api.sh
similarity index 96%
rename from scripts/run_tests_locally-nbi-debug-api.sh
rename to scripts/run_tests_locally-nbi-tfs-api.sh
index 218bad8c57b508cee4fc5cfe40f0f6d484dff32e..ee195963be0d89a0de7fc5d936064963338cce07 100755
--- a/scripts/run_tests_locally-nbi-debug-api.sh
+++ b/scripts/run_tests_locally-nbi-tfs-api.sh
@@ -22,4 +22,4 @@ RCFILE=$PROJECTDIR/coverage/.coveragerc
 # Run unitary tests and analyze coverage of code at same time
 # helpful pytest flags: --log-level=INFO -o log_cli=true --verbose --maxfail=1 --durations=0
 coverage run --rcfile=$RCFILE --append -m pytest --log-level=INFO --verbose \
-    nbi/tests/test_debug_api.py
+    nbi/tests/test_tfs_api.py
diff --git a/src/common/type_checkers/Assertions.py b/src/common/type_checkers/Assertions.py
index 87d8e54ee390fb1f56266317be5317731bb755b6..ac1462ac450778ce41f5073d2d03da26b7507cee 100644
--- a/src/common/type_checkers/Assertions.py
+++ b/src/common/type_checkers/Assertions.py
@@ -46,7 +46,7 @@ def validate_device_driver_enum(message):
         'DEVICEDRIVER_XR',
         'DEVICEDRIVER_IETF_L2VPN',
         'DEVICEDRIVER_GNMI_OPENCONFIG',
-        'DEVICEDRIVER_FLEXSCALE',
+        'DEVICEDRIVER_OPTICAL_TFS',
         'DEVICEDRIVER_IETF_ACTN',
     ]
 
diff --git a/src/context/service/ContextServiceServicerImpl.py b/src/context/service/ContextServiceServicerImpl.py
index a102fa17629bd866d96883230a542a6e7a4d92ff..379705372be0cbe1050311f264dd04ffbe6b7656 100644
--- a/src/context/service/ContextServiceServicerImpl.py
+++ b/src/context/service/ContextServiceServicerImpl.py
@@ -305,7 +305,7 @@ class ContextServiceServicerImpl(ContextServiceServicer, ContextPolicyServiceSer
     @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
     def GetOpticalConfig(self, request : Empty, context : grpc.ServicerContext) -> OpticalConfigList:
         result = get_opticalconfig(self.db_engine)
-        return OpticalConfigList(OpticalConfigs=result)
+        return OpticalConfigList(opticalconfigs=result)
 
     @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
     def SetOpticalConfig(self, request : OpticalConfig, context : grpc.ServicerContext) -> OpticalConfigId:
@@ -315,6 +315,4 @@ class ContextServiceServicerImpl(ContextServiceServicer, ContextPolicyServiceSer
     @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
     def SelectOpticalConfig(self, request : OpticalConfigId, context : grpc.ServicerContext) -> OpticalConfig:
         result = select_opticalconfig(self.db_engine, request)
-        optical_config_id = OpticalConfigId()
-        optical_config_id.CopyFrom(result.OpticalConfig_id)
-        return OpticalConfig(config=result.config, OpticalConfig_id=optical_config_id)
+        return OpticalConfig(config=result.config, opticalconfig_id=result.opticalconfig_id)
diff --git a/src/context/service/database/models/enums/DeviceDriver.py b/src/context/service/database/models/enums/DeviceDriver.py
index 2ccdda2725a7f7bb13ba296d4eca25f88b1e73d1..194d66fedb3014b07974196bdc4eac2b2c9c0c39 100644
--- a/src/context/service/database/models/enums/DeviceDriver.py
+++ b/src/context/service/database/models/enums/DeviceDriver.py
@@ -31,7 +31,7 @@ class ORM_DeviceDriverEnum(enum.Enum):
     XR                    = DeviceDriverEnum.DEVICEDRIVER_XR
     IETF_L2VPN            = DeviceDriverEnum.DEVICEDRIVER_IETF_L2VPN
     GNMI_OPENCONFIG       = DeviceDriverEnum.DEVICEDRIVER_GNMI_OPENCONFIG
-    FLEXSCALE             = DeviceDriverEnum.DEVICEDRIVER_FLEXSCALE
+    OPTICAL_TFS           = DeviceDriverEnum.DEVICEDRIVER_OPTICAL_TFS
     IETF_ACTN             = DeviceDriverEnum.DEVICEDRIVER_IETF_ACTN
     OC                    = DeviceDriverEnum.DEVICEDRIVER_OC
 
diff --git a/src/device/service/drivers/__init__.py b/src/device/service/drivers/__init__.py
index beb3db38e153445e48d61e3ad4ac5d514297a91d..97cf166e6cdf5bc025e1883e66181e2d5aab8f74 100644
--- a/src/device/service/drivers/__init__.py
+++ b/src/device/service/drivers/__init__.py
@@ -156,12 +156,12 @@ if LOAD_ALL_DEVICE_DRIVERS:
         ]))
 
 if LOAD_ALL_DEVICE_DRIVERS:
-    from .flexscale.FlexScaleDriver import FlexScaleDriver # pylint: disable=wrong-import-position
+    from .optical_tfs.OpticalTfsDriver import OpticalTfsDriver # pylint: disable=wrong-import-position
     DRIVERS.append(
-        (FlexScaleDriver, [
+        (OpticalTfsDriver, [
             {
                 FilterFieldEnum.DEVICE_TYPE: DeviceTypeEnum.OPEN_LINE_SYSTEM,
-                FilterFieldEnum.DRIVER: DeviceDriverEnum.DEVICEDRIVER_FLEXSCALE,
+                FilterFieldEnum.DRIVER: DeviceDriverEnum.DEVICEDRIVER_OPTICAL_TFS,
             }
         ]))
 
diff --git a/src/device/service/drivers/ietf_l2vpn/IetfL2VpnDriver.py b/src/device/service/drivers/ietf_l2vpn/IetfL2VpnDriver.py
index c79dde99a4d3c48f2f27ff00451f50aa1af9bee2..07036fcf31a414a5593a3ddf6c3e0b4f4aecf25a 100644
--- a/src/device/service/drivers/ietf_l2vpn/IetfL2VpnDriver.py
+++ b/src/device/service/drivers/ietf_l2vpn/IetfL2VpnDriver.py
@@ -20,7 +20,7 @@ from common.tools.object_factory.EndPoint import json_endpoint_id
 from common.type_checkers.Checkers import chk_string, chk_type
 from device.service.driver_api._Driver import _Driver, RESOURCE_ENDPOINTS, RESOURCE_SERVICES
 from device.service.driver_api.ImportTopologyEnum import ImportTopologyEnum, get_import_topology
-from device.service.drivers.ietf_l2vpn.TfsDebugApiClient import TfsDebugApiClient
+from device.service.drivers.ietf_l2vpn.TfsApiClient import TfsApiClient
 from .Tools import connection_point, wim_mapping
 from .WimconnectorIETFL2VPN import WimconnectorIETFL2VPN
 
@@ -56,7 +56,7 @@ class IetfL2VpnDriver(_Driver):
         wim_account = {'user': username, 'password': password}
         # Mapping updated dynamically with each request
         config = {'mapping_not_needed': False, 'service_endpoint_mapping': []}
-        self.dac = TfsDebugApiClient(self.address, int(self.port), scheme=scheme, username=username, password=password)
+        self.tac = TfsApiClient(self.address, int(self.port), scheme=scheme, username=username, password=password)
         self.wim = WimconnectorIETFL2VPN(wim, wim_account, config=config)
         self.conn_info = {} # internal database emulating OSM storage provided to WIM Connectors
 
@@ -101,8 +101,8 @@ class IetfL2VpnDriver(_Driver):
                 try:
                     chk_string(str_resource_name, resource_key, allow_empty=False)
                     if resource_key == RESOURCE_ENDPOINTS:
-                        # return endpoints through debug-api and list-devices method
-                        results.extend(self.dac.get_devices_endpoints(self.__import_topology))
+                        # return endpoints through TFS NBI API and list-devices method
+                        results.extend(self.tac.get_devices_endpoints(self.__import_topology))
                     elif resource_key == RESOURCE_SERVICES:
                         # return all services through 
                         reply = self.wim.get_all_active_connectivity_services()
diff --git a/src/device/service/drivers/ietf_l2vpn/TfsDebugApiClient.py b/src/device/service/drivers/ietf_l2vpn/TfsApiClient.py
similarity index 95%
rename from src/device/service/drivers/ietf_l2vpn/TfsDebugApiClient.py
rename to src/device/service/drivers/ietf_l2vpn/TfsApiClient.py
index 06c55c5dc1b0feb77d817581ae5d735e1158e38d..8edd78f5a90598cb5a2471e256ce3a9d1df399c1 100644
--- a/src/device/service/drivers/ietf_l2vpn/TfsDebugApiClient.py
+++ b/src/device/service/drivers/ietf_l2vpn/TfsApiClient.py
@@ -17,8 +17,8 @@ from requests.auth import HTTPBasicAuth
 from typing import Dict, List, Optional
 from device.service.driver_api.ImportTopologyEnum import ImportTopologyEnum
 
-GET_DEVICES_URL = '{:s}://{:s}:{:d}/restconf/debug-api/devices'
-GET_LINKS_URL   = '{:s}://{:s}:{:d}/restconf/debug-api/links'
+GET_DEVICES_URL = '{:s}://{:s}:{:d}/tfs-api/devices'
+GET_LINKS_URL   = '{:s}://{:s}:{:d}/tfs-api/links'
 TIMEOUT = 30
 
 HTTP_OK_CODES = {
@@ -44,14 +44,16 @@ MAPPING_DRIVER = {
     'DEVICEDRIVER_XR'                   : 6,
     'DEVICEDRIVER_IETF_L2VPN'           : 7,
     'DEVICEDRIVER_GNMI_OPENCONFIG'      : 8,
-    'DEVICEDRIVER_FLEXSCALE'            : 9,
+    'DEVICEDRIVER_OPTICAL_TFS'          : 9,
+    'DEVICEDRIVER_IETF_ACTN'            : 10,
+    'DEVICEDRIVER_OC'                   : 11,
 }
 
 MSG_ERROR = 'Could not retrieve devices in remote TeraFlowSDN instance({:s}). status_code={:s} reply={:s}'
 
 LOGGER = logging.getLogger(__name__)
 
-class TfsDebugApiClient:
+class TfsApiClient:
     def __init__(
         self, address : str, port : int, scheme : str = 'http',
         username : Optional[str] = None, password : Optional[str] = None
diff --git a/src/device/service/drivers/flexscale/FlexScaleDriver.py b/src/device/service/drivers/optical_tfs/OpticalTfsDriver.py
similarity index 85%
rename from src/device/service/drivers/flexscale/FlexScaleDriver.py
rename to src/device/service/drivers/optical_tfs/OpticalTfsDriver.py
index f91ee1cebbd686cceed2370df98445aa247d5990..828e5e67446bb2b0c9060e15f349fd1f8e1274cb 100644
--- a/src/device/service/drivers/flexscale/FlexScaleDriver.py
+++ b/src/device/service/drivers/optical_tfs/OpticalTfsDriver.py
@@ -21,16 +21,16 @@ from device.service.driver_api._Driver import _Driver
 from . import ALL_RESOURCE_KEYS
 from .Tools import find_key, add_lightpath, del_lightpath, get_lightpaths
 from device.service.driver_api._Driver import _Driver, RESOURCE_ENDPOINTS
-from device.service.drivers.ietf_l2vpn.TfsDebugApiClient import TfsDebugApiClient
+from device.service.drivers.ietf_l2vpn.TfsApiClient import TfsApiClient
 from device.service.driver_api.ImportTopologyEnum import ImportTopologyEnum, get_import_topology
 
 LOGGER = logging.getLogger(__name__)
 
-DRIVER_NAME = 'flexscale'
+DRIVER_NAME = 'optical_tfs'
 METRICS_POOL = MetricsPool('Device', 'Driver', labels={'driver': DRIVER_NAME})
 
 
-class FlexScaleDriver(_Driver):
+class OpticalTfsDriver(_Driver):
     def __init__(self, address: str, port: int, **settings) -> None:
         super().__init__(DRIVER_NAME, address, port, **settings)
         self.__lock = threading.Lock()
@@ -40,8 +40,8 @@ class FlexScaleDriver(_Driver):
         password = self.settings.get('password')
         self.__auth = HTTPBasicAuth(username, password) if username is not None and password is not None else None
         scheme = self.settings.get('scheme', 'http')
-        self.dac = TfsDebugApiClient(self.address, int(self.port), scheme=scheme, username=username, password=password)
-        self.__flexscale_root = '{:s}://{:s}:{:d}'.format(scheme, self.address, int(self.port))
+        self.tac = TfsApiClient(self.address, int(self.port), scheme=scheme, username=username, password=password)
+        self.__base_url = '{:s}://{:s}:{:d}'.format(scheme, self.address, int(self.port))
         self.__timeout = int(self.settings.get('timeout', 120))
 
         # Options are:
@@ -54,7 +54,7 @@ class FlexScaleDriver(_Driver):
         
 
     def Connect(self) -> bool:
-        url = self.__flexscale_root + '/OpticalTFS/GetLightpaths'
+        url = self.__base_url + '/OpticalTFS/GetLightpaths'
         with self.__lock:
             if self.__started.is_set(): return True
             try:
@@ -90,11 +90,11 @@ class FlexScaleDriver(_Driver):
                 chk_string(str_resource_name, resource_key, allow_empty=False)
 
                 if resource_key == RESOURCE_ENDPOINTS:
-                    # return endpoints through debug-api and list-devices method
-                    results.extend(self.dac.get_devices_endpoints(self.__import_topology))
+                    # return endpoints through TFS NBI API and list-devices method
+                    results.extend(self.tac.get_devices_endpoints(self.__import_topology))
 
                 # results.extend(get_lightpaths(
-                #     self.__flexscale_root, resource_key, timeout=self.__timeout, auth=self.__auth))
+                #     self.__base_url, resource_key, timeout=self.__timeout, auth=self.__auth))
         return results
 
     @metered_subclass_method(METRICS_POOL)
@@ -110,7 +110,7 @@ class FlexScaleDriver(_Driver):
                 dst_node = find_key(resource, 'dst_node')
                 bitrate =  find_key(resource, 'bitrate')
 
-                response = add_lightpath(self.__flexscale_root, src_node, dst_node, bitrate, 
+                response = add_lightpath(self.__base_url, src_node, dst_node, bitrate, 
                                      auth=self.__auth, timeout=self.__timeout)
 
                 results.extend(response)
@@ -129,23 +129,23 @@ class FlexScaleDriver(_Driver):
                 dst_node = find_key(resource, 'dst_node')
                 bitrate = find_key(resource, 'bitrate')
 
-                response = del_lightpath(self.__flexscale_root, flow_id, src_node, dst_node, bitrate)
+                response = del_lightpath(self.__base_url, flow_id, src_node, dst_node, bitrate)
                 results.extend(response)
 
         return results
 
     @metered_subclass_method(METRICS_POOL)
     def SubscribeState(self, subscriptions : List[Tuple[str, float, float]]) -> List[Union[bool, Exception]]:
-        # FlexScale does not support monitoring by now
+        # Optical TFS does not support monitoring by now
         return [False for _ in subscriptions]
 
     @metered_subclass_method(METRICS_POOL)
     def UnsubscribeState(self, subscriptions : List[Tuple[str, float, float]]) -> List[Union[bool, Exception]]:
-        # FlexScale does not support monitoring by now
+        # Optical TFS does not support monitoring by now
         return [False for _ in subscriptions]
 
     def GetState(
         self, blocking=False, terminate : Optional[threading.Event] = None
     ) -> Iterator[Tuple[float, str, Any]]:
-        # FlexScale does not support monitoring by now
+        # Optical TFS does not support monitoring by now
         return []
diff --git a/src/device/service/drivers/flexscale/Tools.py b/src/device/service/drivers/optical_tfs/Tools.py
similarity index 100%
rename from src/device/service/drivers/flexscale/Tools.py
rename to src/device/service/drivers/optical_tfs/Tools.py
diff --git a/src/device/service/drivers/flexscale/__init__.py b/src/device/service/drivers/optical_tfs/__init__.py
similarity index 100%
rename from src/device/service/drivers/flexscale/__init__.py
rename to src/device/service/drivers/optical_tfs/__init__.py
diff --git a/src/nbi/.gitlab-ci.yml b/src/nbi/.gitlab-ci.yml
index 2f711020284613b0a700a7dfc6a76b5bcb7f7e5c..219e9013272ad2ee9ea26b507f8c91053768a597 100644
--- a/src/nbi/.gitlab-ci.yml
+++ b/src/nbi/.gitlab-ci.yml
@@ -66,7 +66,7 @@ unit_test nbi:
     - sleep 5
     - docker ps -a
     - docker logs $IMAGE_NAME
-    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_debug_api.py --junitxml=/opt/results/${IMAGE_NAME}_report_debug_api.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_tfs_api.py --junitxml=/opt/results/${IMAGE_NAME}_report_tfs_api.xml"
     - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_l2vpn.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_l2vpn.xml"
     - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_network.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_network.xml"
     - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_l3vpn.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_l3vpn.xml"
diff --git a/src/nbi/service/__main__.py b/src/nbi/service/__main__.py
index aa16ee89708eb330775583cb84063cdcd83c0c8b..67bf06267c1570c777671848467711147807494e 100644
--- a/src/nbi/service/__main__.py
+++ b/src/nbi/service/__main__.py
@@ -20,12 +20,12 @@ from common.Settings import (
     wait_for_environment_variables)
 from .NbiService import NbiService
 from .rest_server.RestServer import RestServer
-from .rest_server.nbi_plugins.debug_api import register_debug_api
 from .rest_server.nbi_plugins.etsi_bwm import register_etsi_bwm_api
 from .rest_server.nbi_plugins.ietf_l2vpn import register_ietf_l2vpn
 from .rest_server.nbi_plugins.ietf_l3vpn import register_ietf_l3vpn
 from .rest_server.nbi_plugins.ietf_network import register_ietf_network
 from .rest_server.nbi_plugins.ietf_network_slice import register_ietf_nss
+from .rest_server.nbi_plugins.tfs_api import register_tfs_api
 from .rest_server.nbi_plugins.context_subscription import register_context_subscription
 
 terminate = threading.Event()
@@ -63,12 +63,12 @@ def main():
     grpc_service.start()
 
     rest_server = RestServer()
-    register_debug_api(rest_server)
     register_etsi_bwm_api(rest_server)
     register_ietf_l2vpn(rest_server)  # Registering L2VPN entrypoint
     register_ietf_l3vpn(rest_server)  # Registering L3VPN entrypoint
     register_ietf_network(rest_server)
     register_ietf_nss(rest_server)  # Registering NSS entrypoint
+    register_tfs_api(rest_server)
     rest_server.start()
 
     register_context_subscription()
diff --git a/src/nbi/service/rest_server/nbi_plugins/debug_api/Resources.py b/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py
similarity index 100%
rename from src/nbi/service/rest_server/nbi_plugins/debug_api/Resources.py
rename to src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py
diff --git a/src/nbi/service/rest_server/nbi_plugins/debug_api/Tools.py b/src/nbi/service/rest_server/nbi_plugins/tfs_api/Tools.py
similarity index 100%
rename from src/nbi/service/rest_server/nbi_plugins/debug_api/Tools.py
rename to src/nbi/service/rest_server/nbi_plugins/tfs_api/Tools.py
diff --git a/src/nbi/service/rest_server/nbi_plugins/debug_api/__init__.py b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
similarity index 98%
rename from src/nbi/service/rest_server/nbi_plugins/debug_api/__init__.py
rename to src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
index e420fa949d76b01bf438da2053229481483e7eb7..2e2be6fccde09a508c88a7006a37ce379cc278f1 100644
--- a/src/nbi/service/rest_server/nbi_plugins/debug_api/__init__.py
+++ b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
@@ -26,7 +26,7 @@ from .Resources import (
     Topologies, Topology, TopologyIds
 )
 
-URL_PREFIX = '/debug-api'
+URL_PREFIX = '/tfs-api'
 
 # Use 'path' type since some identifiers might contain char '/' and Flask is unable to recognize them in 'string' type.
 RESOURCES = [
@@ -69,6 +69,6 @@ RESOURCES = [
     ('api.policyrule',          PolicyRule,         '/policyrule/<path:policyrule_uuid>'),
 ]
 
-def register_debug_api(rest_server : RestServer):
+def register_tfs_api(rest_server : RestServer):
     for endpoint_name, resource_class, resource_url in RESOURCES:
         rest_server.add_resource(resource_class, URL_PREFIX + resource_url, endpoint=endpoint_name)
diff --git a/src/nbi/tests/PrepareTestScenario.py b/src/nbi/tests/PrepareTestScenario.py
index 461245e09190ffe9795bc3bfcb4d21b516cc3071..ab477fb0b4e541b3bf3192ff1925d9d7bdfedec6 100644
--- a/src/nbi/tests/PrepareTestScenario.py
+++ b/src/nbi/tests/PrepareTestScenario.py
@@ -21,11 +21,11 @@ from common.Settings import (
 )
 from context.client.ContextClient import ContextClient
 from nbi.service.rest_server.RestServer import RestServer
-from nbi.service.rest_server.nbi_plugins.debug_api import register_debug_api
 from nbi.service.rest_server.nbi_plugins.etsi_bwm import register_etsi_bwm_api
 from nbi.service.rest_server.nbi_plugins.ietf_l2vpn import register_ietf_l2vpn
 from nbi.service.rest_server.nbi_plugins.ietf_l3vpn import register_ietf_l3vpn
 from nbi.service.rest_server.nbi_plugins.ietf_network import register_ietf_network
+from nbi.service.rest_server.nbi_plugins.tfs_api import register_tfs_api
 from nbi.tests.MockService_Dependencies import MockService_Dependencies
 from service.client.ServiceClient import ServiceClient
 from slice.client.SliceClient import SliceClient
@@ -49,11 +49,11 @@ def mock_service():
 @pytest.fixture(scope='session')
 def nbi_service_rest(mock_service : MockService_Dependencies):  # pylint: disable=redefined-outer-name, unused-argument
     _rest_server = RestServer()
-    register_debug_api(_rest_server)
     register_etsi_bwm_api(_rest_server)
     register_ietf_l2vpn(_rest_server)
     register_ietf_l3vpn(_rest_server)
     register_ietf_network(_rest_server)
+    register_tfs_api(_rest_server)
     _rest_server.start()
     time.sleep(1) # bring time for the server to start
     yield _rest_server
diff --git a/src/nbi/tests/data/debug_api_dummy.json b/src/nbi/tests/data/tfs_api_dummy.json
similarity index 100%
rename from src/nbi/tests/data/debug_api_dummy.json
rename to src/nbi/tests/data/tfs_api_dummy.json
diff --git a/src/nbi/tests/test_debug_api.py b/src/nbi/tests/test_tfs_api.py
similarity index 83%
rename from src/nbi/tests/test_debug_api.py
rename to src/nbi/tests/test_tfs_api.py
index f19531eaed3b106279c2752a55eb00bb1ca30bb7..91aa64b4e4cca71078067b4d7ce01453986301c3 100644
--- a/src/nbi/tests/test_debug_api.py
+++ b/src/nbi/tests/test_tfs_api.py
@@ -39,7 +39,7 @@ from .PrepareTestScenario import ( # pylint: disable=unused-import
 LOGGER = logging.getLogger(__name__)
 LOGGER.setLevel(logging.DEBUG)
 
-DESCRIPTOR_FILE = 'nbi/tests/data/debug_api_dummy.json'
+DESCRIPTOR_FILE = 'nbi/tests/data/tfs_api_dummy.json'
 
 JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME)
 ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID)
@@ -64,16 +64,16 @@ def test_prepare_environment(context_client : ContextClient) -> None: # pylint:
 # ----- Context --------------------------------------------------------------------------------------------------------
 
 def test_rest_get_context_ids(nbi_service_rest: RestServer): # pylint: disable=redefined-outer-name, unused-argument
-    reply = do_rest_get_request('/debug-api/context_ids')
+    reply = do_rest_get_request('/tfs-api/context_ids')
     validate_context_ids(reply)
 
 def test_rest_get_contexts(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
-    reply = do_rest_get_request('/debug-api/contexts')
+    reply = do_rest_get_request('/tfs-api/contexts')
     validate_contexts(reply)
 
 def test_rest_get_context(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
-    reply = do_rest_get_request('/debug-api/context/{:s}'.format(context_uuid))
+    reply = do_rest_get_request('/tfs-api/context/{:s}'.format(context_uuid))
     validate_context(reply)
 
 
@@ -81,50 +81,50 @@ def test_rest_get_context(nbi_service_rest : RestServer): # pylint: disable=rede
 
 def test_rest_get_topology_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
-    reply = do_rest_get_request('/debug-api/context/{:s}/topology_ids'.format(context_uuid))
+    reply = do_rest_get_request('/tfs-api/context/{:s}/topology_ids'.format(context_uuid))
     validate_topology_ids(reply)
 
 def test_rest_get_topologies(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
-    reply = do_rest_get_request('/debug-api/context/{:s}/topologies'.format(context_uuid))
+    reply = do_rest_get_request('/tfs-api/context/{:s}/topologies'.format(context_uuid))
     validate_topologies(reply)
 
 def test_rest_get_topology(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
     topology_uuid = urllib.parse.quote(DEFAULT_TOPOLOGY_NAME)
-    reply = do_rest_get_request('/debug-api/context/{:s}/topology/{:s}'.format(context_uuid, topology_uuid))
+    reply = do_rest_get_request('/tfs-api/context/{:s}/topology/{:s}'.format(context_uuid, topology_uuid))
     validate_topology(reply, num_devices=3, num_links=6)
 
 
 # ----- Device ---------------------------------------------------------------------------------------------------------
 
 def test_rest_get_device_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
-    reply = do_rest_get_request('/debug-api/device_ids')
+    reply = do_rest_get_request('/tfs-api/device_ids')
     validate_device_ids(reply)
 
 def test_rest_get_devices(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
-    reply = do_rest_get_request('/debug-api/devices')
+    reply = do_rest_get_request('/tfs-api/devices')
     validate_devices(reply)
 
 def test_rest_get_device(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     device_uuid = urllib.parse.quote('R1', safe='')
-    reply = do_rest_get_request('/debug-api/device/{:s}'.format(device_uuid))
+    reply = do_rest_get_request('/tfs-api/device/{:s}'.format(device_uuid))
     validate_device(reply)
 
 
 # ----- Link -----------------------------------------------------------------------------------------------------------
 
 def test_rest_get_link_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
-    reply = do_rest_get_request('/debug-api/link_ids')
+    reply = do_rest_get_request('/tfs-api/link_ids')
     validate_link_ids(reply)
 
 def test_rest_get_links(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
-    reply = do_rest_get_request('/debug-api/links')
+    reply = do_rest_get_request('/tfs-api/links')
     validate_links(reply)
 
 def test_rest_get_link(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     link_uuid = urllib.parse.quote('R1/502==R2/501', safe='')
-    reply = do_rest_get_request('/debug-api/link/{:s}'.format(link_uuid))
+    reply = do_rest_get_request('/tfs-api/link/{:s}'.format(link_uuid))
     validate_link(reply)
 
 
@@ -132,18 +132,18 @@ def test_rest_get_link(nbi_service_rest : RestServer): # pylint: disable=redefin
 
 def test_rest_get_service_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
-    reply = do_rest_get_request('/debug-api/context/{:s}/service_ids'.format(context_uuid))
+    reply = do_rest_get_request('/tfs-api/context/{:s}/service_ids'.format(context_uuid))
     validate_service_ids(reply)
 
 def test_rest_get_services(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
-    reply = do_rest_get_request('/debug-api/context/{:s}/services'.format(context_uuid))
+    reply = do_rest_get_request('/tfs-api/context/{:s}/services'.format(context_uuid))
     validate_services(reply)
 
 def test_rest_get_service(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
     service_uuid = urllib.parse.quote('SVC:R1/200==R2/200', safe='')
-    reply = do_rest_get_request('/debug-api/context/{:s}/service/{:s}'.format(context_uuid, service_uuid))
+    reply = do_rest_get_request('/tfs-api/context/{:s}/service/{:s}'.format(context_uuid, service_uuid))
     validate_service(reply)
 
 
@@ -151,18 +151,18 @@ def test_rest_get_service(nbi_service_rest : RestServer): # pylint: disable=rede
 
 def test_rest_get_slice_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
-    reply = do_rest_get_request('/debug-api/context/{:s}/slice_ids'.format(context_uuid))
+    reply = do_rest_get_request('/tfs-api/context/{:s}/slice_ids'.format(context_uuid))
     validate_slice_ids(reply)
 
 def test_rest_get_slices(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
-    reply = do_rest_get_request('/debug-api/context/{:s}/slices'.format(context_uuid))
+    reply = do_rest_get_request('/tfs-api/context/{:s}/slices'.format(context_uuid))
     validate_slices(reply)
 
 def test_rest_get_slice(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
     slice_uuid = urllib.parse.quote('SLC:R1-R2-R3', safe='')
-    reply = do_rest_get_request('/debug-api/context/{:s}/slice/{:s}'.format(context_uuid, slice_uuid))
+    reply = do_rest_get_request('/tfs-api/context/{:s}/slice/{:s}'.format(context_uuid, slice_uuid))
     validate_slice(reply)
 
 
@@ -171,33 +171,33 @@ def test_rest_get_slice(nbi_service_rest : RestServer): # pylint: disable=redefi
 def test_rest_get_connection_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
     service_uuid = urllib.parse.quote('SVC:R1/200==R2/200', safe='')
-    reply = do_rest_get_request('/debug-api/context/{:s}/service/{:s}/connection_ids'.format(context_uuid, service_uuid))
+    reply = do_rest_get_request('/tfs-api/context/{:s}/service/{:s}/connection_ids'.format(context_uuid, service_uuid))
     validate_connection_ids(reply)
 
 def test_rest_get_connections(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
     service_uuid = urllib.parse.quote('SVC:R1/200==R2/200', safe='')
-    reply = do_rest_get_request('/debug-api/context/{:s}/service/{:s}/connections'.format(context_uuid, service_uuid))
+    reply = do_rest_get_request('/tfs-api/context/{:s}/service/{:s}/connections'.format(context_uuid, service_uuid))
     validate_connections(reply)
 
 def test_rest_get_connection(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
     connection_uuid = urllib.parse.quote('CON:R1/200==R2/200:1', safe='')
-    reply = do_rest_get_request('/debug-api/connection/{:s}'.format(connection_uuid))
+    reply = do_rest_get_request('/tfs-api/connection/{:s}'.format(connection_uuid))
     validate_connection(reply)
 
 # ----- Policy ---------------------------------------------------------------------------------------------------------
 
 #def test_rest_get_policyrule_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
-#    reply = do_rest_get_request('/debug-api/policyrule_ids')
+#    reply = do_rest_get_request('/tfs-api/policyrule_ids')
 #    validate_policyrule_ids(reply)
 
 #def test_rest_get_policyrules(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
-#    reply = do_rest_get_request('/debug-api/policyrules')
+#    reply = do_rest_get_request('/tfs-api/policyrules')
 #    validate_policyrules(reply)
 
 #def test_rest_get_policyrule(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
 #    policyrule_uuid_quoted = urllib.parse.quote(policyrule_uuid, safe='')
-#    reply = do_rest_get_request('/debug-api/policyrule/{:s}'.format(policyrule_uuid_quoted))
+#    reply = do_rest_get_request('/tfs-api/policyrule/{:s}'.format(policyrule_uuid_quoted))
 #    validate_policyrule(reply)
 
 
diff --git a/src/opticalcontroller/OpticalController.py b/src/opticalcontroller/OpticalController.py
index c2805695a75933c73d4ad367176bee8b504d4460..326862f93453674d5dff5566c2184dba1f00565c 100644
--- a/src/opticalcontroller/OpticalController.py
+++ b/src/opticalcontroller/OpticalController.py
@@ -85,6 +85,7 @@ class AddFlexLightpath(Resource):
         if rsa is not None:
             flow_id, optical_band_id = rsa.rsa_fs_computation(src, dst, bitrate, bidir, band)
             print (f"flow_id {flow_id} and optical_band_id {optical_band_id} ")
+            LOGGER.debug('flow_id={:s} rsa.db_flows={:s}'.format(str(flow_id), str(rsa.db_flows)))
             if flow_id is not None:
                 if rsa.db_flows[flow_id]["op-mode"] == 0:
                     return 'No path found', 404
diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java b/src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java
index 570a7fb9e5501ce9e81037e7010cdb1c5fc35a94..e9024d86f347a66196acabb57f8bbabb3fa9e7d1 100644
--- a/src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java
@@ -2300,8 +2300,8 @@ public class Serializer {
                 return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_IETF_L2VPN;
             case GNMI_OPENCONFIG:
                 return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_GNMI_OPENCONFIG;
-            case FLEXSCALE:
-                return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_FLEXSCALE;
+            case OPTICAL_TFS:
+                return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_OPTICAL_TFS;
             case IETF_ACTN:
                 return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_IETF_ACTN;
             case UNDEFINED:
@@ -2329,8 +2329,8 @@ public class Serializer {
                 return DeviceDriverEnum.IETF_L2VPN;
             case DEVICEDRIVER_GNMI_OPENCONFIG:
                 return DeviceDriverEnum.GNMI_OPENCONFIG;
-            case DEVICEDRIVER_FLEXSCALE:
-                return DeviceDriverEnum.FLEXSCALE;
+            case DEVICEDRIVER_OPTICAL_TFS:
+                return DeviceDriverEnum.OPTICAL_TFS;
             case DEVICEDRIVER_IETF_ACTN:
                 return DeviceDriverEnum.IETF_ACTN;
             case DEVICEDRIVER_UNDEFINED:
diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceDriverEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceDriverEnum.java
index 72a1d7136c00d2bac93087d7f8b8f3b7626f9803..ce1d6a3f6955d9c5130b380c3a26862efe273fca 100644
--- a/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceDriverEnum.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceDriverEnum.java
@@ -26,6 +26,6 @@ public enum DeviceDriverEnum {
     XR,
     IETF_L2VPN,
     GNMI_OPENCONFIG,
-    FLEXSCALE,
+    OPTICAL_TFS,
     IETF_ACTN
 }
diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyDeviceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyDeviceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..4795273c6659c3cf7a79d8bb43cc7af0f2ed3ea3
--- /dev/null
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyDeviceImpl.java
@@ -0,0 +1,96 @@
+/*
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.etsi.tfs.policy.policy;
+
+import static org.etsi.tfs.policy.common.ApplicationProperties.INVALID_MESSAGE;
+import static org.etsi.tfs.policy.common.ApplicationProperties.VALIDATED_POLICYRULE_STATE;
+
+import io.smallrye.mutiny.Uni;
+import io.smallrye.mutiny.groups.UniJoin;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import java.util.List;
+import org.etsi.tfs.policy.context.ContextService;
+import org.etsi.tfs.policy.exception.ExternalServiceFailureException;
+import org.etsi.tfs.policy.policy.model.PolicyRule;
+import org.etsi.tfs.policy.policy.model.PolicyRuleBasic;
+import org.etsi.tfs.policy.policy.model.PolicyRuleDevice;
+import org.etsi.tfs.policy.policy.model.PolicyRuleState;
+import org.etsi.tfs.policy.policy.model.PolicyRuleStateEnum;
+import org.etsi.tfs.policy.policy.model.PolicyRuleTypeDevice;
+import org.etsi.tfs.policy.policy.service.PolicyRuleConditionValidator;
+
+@ApplicationScoped
+public class AddPolicyDeviceImpl {
+
+    @Inject private PolicyRuleConditionValidator policyRuleConditionValidator;
+
+    @Inject private CommonPolicyServiceImpl commonPolicyServiceImpl;
+    @Inject private CommonAlarmService commonAlarmService;
+
+    @Inject private ContextService contextService;
+
+    public Uni<List<Boolean>> returnInvalidDeviceIds(List<String> deviceIds) {
+        UniJoin.Builder<Boolean> builder = Uni.join().builder();
+        for (String deviceId : deviceIds) {
+            final var validatedDeviceId = policyRuleConditionValidator.isDeviceIdValid(deviceId);
+            builder.add(validatedDeviceId);
+        }
+        return builder.joinAll().andFailFast();
+    }
+
+    public Uni<PolicyRuleState> areDeviceOnContext(
+            List<Boolean> areDevices,
+            PolicyRuleDevice policyRuleDevice,
+            PolicyRuleBasic policyRuleBasic) {
+        if (areDevices.contains(false)) {
+            var policyRuleState =
+                    new PolicyRuleState(
+                            PolicyRuleStateEnum.POLICY_FAILED,
+                            String.format(
+                                    INVALID_MESSAGE, policyRuleDevice.getPolicyRuleBasic().getPolicyRuleId()));
+
+            return Uni.createFrom().item(policyRuleState);
+        }
+
+        final var policyRuleTypeDevice = new PolicyRuleTypeDevice(policyRuleDevice);
+        final var policyRule = new PolicyRule(policyRuleTypeDevice);
+
+        final var alarmDescriptorList = commonPolicyServiceImpl.createAlarmDescriptorList(policyRule);
+        if (alarmDescriptorList.isEmpty()) {
+            var policyRuleState =
+                    new PolicyRuleState(
+                            PolicyRuleStateEnum.POLICY_FAILED,
+                            String.format(
+                                    "Invalid PolicyRuleConditions in PolicyRule with ID: %s",
+                                    policyRuleBasic.getPolicyRuleId()));
+            return Uni.createFrom().item(policyRuleState);
+        }
+
+        return contextService
+                .setPolicyRule(policyRule)
+                .onFailure()
+                .transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
+                .onItem()
+                .transform(
+                        policyId -> {
+                            commonAlarmService.startMonitoringBasedOnAlarmDescriptors(
+                                    policyId, policyRuleDevice, alarmDescriptorList);
+                            return VALIDATED_POLICYRULE_STATE;
+                        });
+    }
+}
diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..5932a64128b109b7f7e908590294d0b0db3b03d8
--- /dev/null
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/AddPolicyServiceImpl.java
@@ -0,0 +1,92 @@
+/*
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.etsi.tfs.policy.policy;
+
+import static org.etsi.tfs.policy.common.ApplicationProperties.INVALID_MESSAGE;
+import static org.etsi.tfs.policy.common.ApplicationProperties.VALIDATED_POLICYRULE_STATE;
+
+import io.smallrye.mutiny.Uni;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import java.util.List;
+import org.etsi.tfs.policy.context.ContextService;
+import org.etsi.tfs.policy.context.model.ServiceId;
+import org.etsi.tfs.policy.exception.ExternalServiceFailureException;
+import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
+import org.etsi.tfs.policy.policy.model.PolicyRule;
+import org.etsi.tfs.policy.policy.model.PolicyRuleBasic;
+import org.etsi.tfs.policy.policy.model.PolicyRuleService;
+import org.etsi.tfs.policy.policy.model.PolicyRuleState;
+import org.etsi.tfs.policy.policy.model.PolicyRuleStateEnum;
+import org.etsi.tfs.policy.policy.model.PolicyRuleTypeService;
+
+@ApplicationScoped
+public class AddPolicyServiceImpl {
+
+    @Inject private CommonPolicyServiceImpl commonPolicyService;
+    @Inject private CommonAlarmService commonAlarmService;
+    @Inject private ContextService contextService;
+
+    public Uni<PolicyRuleState> constructPolicyStateBasedOnCriteria(
+            Boolean isService,
+            ServiceId serviceId,
+            PolicyRuleService policyRuleService,
+            PolicyRuleBasic policyRuleBasic) {
+
+        if (!isService) {
+            var policyRuleState =
+                    new PolicyRuleState(
+                            PolicyRuleStateEnum.POLICY_FAILED, String.format(INVALID_MESSAGE, serviceId));
+
+            return Uni.createFrom().item(policyRuleState);
+        }
+
+        final var policyRuleTypeService = new PolicyRuleTypeService(policyRuleService);
+        final var policyRule = new PolicyRule(policyRuleTypeService);
+        final var alarmDescriptorList = commonPolicyService.createAlarmDescriptorList(policyRule);
+
+        if (alarmDescriptorList.isEmpty()) {
+            var policyRuleState =
+                    new PolicyRuleState(
+                            PolicyRuleStateEnum.POLICY_FAILED,
+                            String.format(
+                                    "Invalid PolicyRuleConditions in PolicyRule with ID: %s",
+                                    policyRuleBasic.getPolicyRuleId()));
+            return Uni.createFrom().item(policyRuleState);
+        }
+
+        return setPolicyRuleOnContextAndReturnState(policyRule, policyRuleService, alarmDescriptorList);
+    }
+
+    private Uni<PolicyRuleState> setPolicyRuleOnContextAndReturnState(
+            PolicyRule policyRule,
+            PolicyRuleService policyRuleService,
+            List<AlarmDescriptor> alarmDescriptorList) {
+        return contextService
+                .setPolicyRule(policyRule)
+                .onFailure()
+                .transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
+                .onItem()
+                .transform(
+                        policyId -> {
+                            commonAlarmService.startMonitoringBasedOnAlarmDescriptors(
+                                    policyId, policyRuleService, alarmDescriptorList);
+
+                            return VALIDATED_POLICYRULE_STATE;
+                        });
+    }
+}
diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonAlarmService.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonAlarmService.java
new file mode 100644
index 0000000000000000000000000000000000000000..3cfe6491ebf6e0d5e8b7fa3b5f66f13e6d1c0631
--- /dev/null
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonAlarmService.java
@@ -0,0 +1,189 @@
+/*
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.etsi.tfs.policy.policy;
+
+import static org.etsi.tfs.policy.common.ApplicationProperties.PROVISIONED_POLICYRULE_STATE;
+import static org.etsi.tfs.policy.common.ApplicationProperties.VALIDATED_POLICYRULE_STATE;
+
+import io.smallrye.mutiny.Multi;
+import io.smallrye.mutiny.Uni;
+import io.smallrye.mutiny.subscription.Cancellable;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import java.util.ArrayList;
+import java.util.List;
+import org.etsi.tfs.policy.monitoring.MonitoringService;
+import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
+import org.etsi.tfs.policy.monitoring.model.AlarmResponse;
+import org.etsi.tfs.policy.monitoring.model.AlarmSubscription;
+import org.etsi.tfs.policy.policy.model.PolicyRuleDevice;
+import org.etsi.tfs.policy.policy.model.PolicyRuleService;
+import org.jboss.logging.Logger;
+
+@ApplicationScoped
+public class CommonAlarmService {
+    private static final Logger LOGGER = Logger.getLogger(CommonAlarmService.class);
+
+    @Inject private CommonPolicyServiceImpl commonPolicyServiceImpl;
+    @Inject private MonitoringService monitoringService;
+
+    public void startMonitoringBasedOnAlarmDescriptors(
+            String policyId,
+            PolicyRuleDevice policyRuleDevice,
+            List<AlarmDescriptor> alarmDescriptorList) {
+        commonPolicyServiceImpl.setPolicyRuleDeviceToContext(
+                policyRuleDevice, VALIDATED_POLICYRULE_STATE);
+        commonPolicyServiceImpl.noAlarms = 0;
+
+        List<Uni<String>> alarmIds = createAlarmList(alarmDescriptorList);
+
+        List<Multi<AlarmResponse>> alarmResponseStreamList =
+                transformAlarmIds(alarmIds, policyRuleDevice);
+
+        // Merge the promised alarms into one stream (Multi Object)
+        final var multi = Multi.createBy().merging().streams(alarmResponseStreamList);
+        commonPolicyServiceImpl.setPolicyRuleDeviceToContext(
+                policyRuleDevice, PROVISIONED_POLICYRULE_STATE);
+
+        commonPolicyServiceImpl
+                .getSubscriptionList()
+                .put(policyId, monitorAlarmResponseForDevice(multi));
+
+        // TODO: Resubscribe to the stream, if it has ended
+
+        // TODO: Redesign evaluation of action
+        // evaluateAction(policyRule, alarmDescriptorList, multi);
+    }
+
+    public void startMonitoringBasedOnAlarmDescriptors(
+            String policyId,
+            PolicyRuleService policyRuleService,
+            List<AlarmDescriptor> alarmDescriptorList) {
+        commonPolicyServiceImpl.setPolicyRuleServiceToContext(
+                policyRuleService, VALIDATED_POLICYRULE_STATE);
+        commonPolicyServiceImpl.noAlarms = 0;
+
+        List<Uni<String>> alarmIds =
+                createAlarmList(alarmDescriptorList); // setAllarmtomonitoring get back alarmid
+
+        List<Multi<AlarmResponse>> alarmResponseStreamList =
+                transformAlarmIds(alarmIds, policyRuleService);
+
+        // Merge the promised alarms into one stream (Multi Object)
+        final var multi = Multi.createBy().merging().streams(alarmResponseStreamList);
+        commonPolicyServiceImpl.setPolicyRuleServiceToContext(
+                policyRuleService, PROVISIONED_POLICYRULE_STATE);
+
+        commonPolicyServiceImpl
+                .getSubscriptionList()
+                .put(policyId, monitorAlarmResponseForService(multi));
+
+        // TODO: Resubscribe to the stream, if it has ended
+
+        // TODO: Redesign evaluation of action
+        // evaluateAction(policyRule, alarmDescriptorList, multi);
+    }
+
+    /**
+    * Transform the alarmIds into promised alarms returned from the getAlarmResponseStream
+    *
+    * @param alarmIds the list of alarm ids
+    * @param policyRuleService the policy rule service
+    * @return
+    */
+    private List<Multi<AlarmResponse>> transformAlarmIds(
+            List<Uni<String>> alarmIds, PolicyRuleService policyRuleService) {
+        List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>();
+        for (Uni<String> alarmId : alarmIds) {
+            Multi<AlarmResponse> alarmResponseStream =
+                    alarmId.onItem().transformToMulti(id -> setPolicyMonitor(policyRuleService, id));
+
+            alarmResponseStreamList.add(alarmResponseStream);
+        }
+        return alarmResponseStreamList;
+    }
+
+    private List<Multi<AlarmResponse>> transformAlarmIds(
+            List<Uni<String>> alarmIds, PolicyRuleDevice policyRuleDevice) {
+        // Transform the alarmIds into promised alarms returned from the
+        // getAlarmResponseStream
+        List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>();
+        for (Uni<String> alarmId : alarmIds) {
+            alarmResponseStreamList.add(
+                    alarmId.onItem().transformToMulti(id -> setPolicyMonitor(policyRuleDevice, id)));
+        }
+        return alarmResponseStreamList;
+    }
+
+    private Multi<AlarmResponse> setPolicyMonitor(PolicyRuleService policyRuleService, String id) {
+        commonPolicyServiceImpl.getAlarmPolicyRuleServiceMap().put(id, policyRuleService);
+
+        // TODO: Create infinite subscription
+        var alarmSubscription = new AlarmSubscription(id, 259200, 5000);
+        return monitoringService.getAlarmResponseStream(alarmSubscription);
+    }
+
+    private Multi<AlarmResponse> setPolicyMonitor(PolicyRuleDevice policyRuleDevice, String id) {
+        commonPolicyServiceImpl.getAlarmPolicyRuleDeviceMap().put(id, policyRuleDevice);
+
+        // TODO: Create infinite subscription
+        var alarmSubscription = new AlarmSubscription(id, 259200, 5000);
+        return monitoringService.getAlarmResponseStream(alarmSubscription);
+    }
+
+    /**
+    * Create an alarmIds list that contains the promised ids returned from setKpiAlarm
+    *
+    * @param alarmDescriptorList the list of alarm descriptors
+    * @return the list of alarm descriptors
+    */
+    public List<Uni<String>> createAlarmList(List<AlarmDescriptor> alarmDescriptorList) {
+        List<Uni<String>> alarmIds = new ArrayList<Uni<String>>();
+        for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
+            LOGGER.infof("alarmDescriptor:");
+            LOGGER.infof(alarmDescriptor.toString());
+            alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor));
+        }
+        return alarmIds;
+    }
+
+    private Cancellable monitorAlarmResponseForService(Multi<AlarmResponse> multi) {
+        return multi
+                .subscribe()
+                .with(
+                        alarmResponse -> {
+                            LOGGER.infof("**************************Received Alarm!**************************");
+                            LOGGER.infof("alarmResponse:");
+                            LOGGER.info(alarmResponse);
+                            LOGGER.info(alarmResponse.getAlarmId());
+                            commonPolicyServiceImpl.applyActionService(alarmResponse.getAlarmId());
+                        });
+    }
+
+    private Cancellable monitorAlarmResponseForDevice(Multi<AlarmResponse> multi) {
+        return multi
+                .subscribe()
+                .with(
+                        alarmResponse -> {
+                            LOGGER.infof("**************************Received Alarm!**************************");
+                            LOGGER.infof("alarmResponse:");
+                            LOGGER.info(alarmResponse);
+                            LOGGER.info(alarmResponse.getAlarmId());
+                            commonPolicyServiceImpl.applyActionDevice(alarmResponse.getAlarmId());
+                        });
+    }
+}
diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonPolicyServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonPolicyServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..5ebceba17bea15ee3f1609b2681acbb65e2d08fe
--- /dev/null
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/CommonPolicyServiceImpl.java
@@ -0,0 +1,541 @@
+/*
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.etsi.tfs.policy.policy;
+
+import static org.etsi.tfs.policy.common.ApplicationProperties.ACTIVE_POLICYRULE_STATE;
+import static org.etsi.tfs.policy.common.ApplicationProperties.ENFORCED_POLICYRULE_STATE;
+import static org.etsi.tfs.policy.common.ApplicationProperties.INVALID_MESSAGE;
+
+import io.smallrye.mutiny.subscription.Cancellable;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.ConcurrentHashMap;
+import org.etsi.tfs.policy.context.ContextService;
+import org.etsi.tfs.policy.context.model.ConfigActionEnum;
+import org.etsi.tfs.policy.context.model.ConfigRule;
+import org.etsi.tfs.policy.context.model.ConfigRuleCustom;
+import org.etsi.tfs.policy.context.model.ConfigRuleTypeCustom;
+import org.etsi.tfs.policy.context.model.Constraint;
+import org.etsi.tfs.policy.context.model.ConstraintCustom;
+import org.etsi.tfs.policy.context.model.ConstraintTypeCustom;
+import org.etsi.tfs.policy.context.model.ServiceConfig;
+import org.etsi.tfs.policy.device.DeviceService;
+import org.etsi.tfs.policy.monitoring.MonitoringService;
+import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
+import org.etsi.tfs.policy.monitoring.model.KpiValueRange;
+import org.etsi.tfs.policy.policy.model.BooleanOperator;
+import org.etsi.tfs.policy.policy.model.PolicyRule;
+import org.etsi.tfs.policy.policy.model.PolicyRuleAction;
+import org.etsi.tfs.policy.policy.model.PolicyRuleActionConfig;
+import org.etsi.tfs.policy.policy.model.PolicyRuleActionEnum;
+import org.etsi.tfs.policy.policy.model.PolicyRuleBasic;
+import org.etsi.tfs.policy.policy.model.PolicyRuleCondition;
+import org.etsi.tfs.policy.policy.model.PolicyRuleDevice;
+import org.etsi.tfs.policy.policy.model.PolicyRuleService;
+import org.etsi.tfs.policy.policy.model.PolicyRuleState;
+import org.etsi.tfs.policy.policy.model.PolicyRuleStateEnum;
+import org.etsi.tfs.policy.policy.model.PolicyRuleTypeDevice;
+import org.etsi.tfs.policy.policy.model.PolicyRuleTypeService;
+import org.etsi.tfs.policy.service.ServiceService;
+import org.jboss.logging.Logger;
+
+@ApplicationScoped
+public class CommonPolicyServiceImpl {
+
+    private static final Logger LOGGER = Logger.getLogger(CommonPolicyServiceImpl.class);
+
+    @Inject private MonitoringService monitoringService;
+    @Inject private ContextService contextService;
+    @Inject private ServiceService serviceService;
+    @Inject private DeviceService deviceService;
+
+    private static final int POLICY_EVALUATION_TIMEOUT = 5;
+    private static final int ACCEPTABLE_NUMBER_OF_ALARMS = 3;
+    private static final int MONITORING_WINDOW_IN_SECONDS = 5;
+    private static final int SAMPLING_RATE_PER_SECOND = 1;
+
+    // TODO: Find a better way to disregard alarms while reconfiguring path
+    // Temporary solution for not calling the same rpc more than it's needed
+    public static int noAlarms = 0;
+
+    private ConcurrentHashMap<String, PolicyRuleService> alarmPolicyRuleServiceMap =
+            new ConcurrentHashMap<>();
+    private ConcurrentHashMap<String, PolicyRuleDevice> alarmPolicyRuleDeviceMap =
+            new ConcurrentHashMap<>();
+    private ConcurrentHashMap<String, Cancellable> subscriptionList = new ConcurrentHashMap<>();
+    private HashMap<String, PolicyRuleAction> policyRuleActionMap = new HashMap<>();
+
+    public ConcurrentHashMap<String, Cancellable> getSubscriptionList() {
+        return subscriptionList;
+    }
+
+    public ConcurrentHashMap<String, PolicyRuleService> getAlarmPolicyRuleServiceMap() {
+        return alarmPolicyRuleServiceMap;
+    }
+
+    public ConcurrentHashMap<String, PolicyRuleDevice> getAlarmPolicyRuleDeviceMap() {
+        return alarmPolicyRuleDeviceMap;
+    }
+
+    public HashMap<String, PolicyRuleAction> getPolicyRuleActionMap() {
+        return policyRuleActionMap;
+    }
+
+    private static String gen() {
+        Random r = new Random(System.currentTimeMillis());
+        return String.valueOf((1 + r.nextInt(2)) * 10000 + r.nextInt(10000));
+    }
+
+    private static double getTimeStamp() {
+        long now = Instant.now().getEpochSecond();
+        return Long.valueOf(now).doubleValue();
+    }
+
+    public void applyActionService(String alarmId) {
+        PolicyRuleService policyRuleService = alarmPolicyRuleServiceMap.get(alarmId);
+        PolicyRuleAction policyRuleAction =
+                policyRuleService.getPolicyRuleBasic().getPolicyRuleActions().get(0);
+
+        if (noAlarms == 0) {
+            noAlarms++;
+            setPolicyRuleServiceToContext(policyRuleService, ACTIVE_POLICYRULE_STATE);
+
+            switch (policyRuleAction.getPolicyRuleActionEnum()) {
+                case POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT:
+                    addServiceConstraint(policyRuleService, policyRuleAction);
+                case POLICY_RULE_ACTION_ADD_SERVICE_CONFIGRULE:
+                    addServiceConfigRule(policyRuleService, policyRuleAction);
+                case POLICY_RULE_ACTION_RECALCULATE_PATH:
+                    callRecalculatePathRPC(policyRuleService, policyRuleAction);
+                default:
+                    LOGGER.errorf(INVALID_MESSAGE, policyRuleAction.getPolicyRuleActionEnum());
+                    return;
+            }
+        } else if (noAlarms == 2) {
+            noAlarms = 0;
+        } else {
+            noAlarms++;
+        }
+    }
+
+    public List<AlarmDescriptor> createAlarmDescriptorList(PolicyRule policyRule) {
+        final var policyRuleType = policyRule.getPolicyRuleType();
+        final var policyRuleTypeSpecificType = policyRuleType.getPolicyRuleType();
+
+        List<AlarmDescriptor> alarmDescriptorList = new ArrayList<>();
+        if (policyRuleTypeSpecificType instanceof PolicyRuleService) {
+            final var policyRuleService = (PolicyRuleService) policyRuleTypeSpecificType;
+            final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
+
+            alarmDescriptorList = parsePolicyRuleCondition(policyRuleBasic);
+            if (alarmDescriptorList.isEmpty()) {
+                return List.of();
+            }
+        } else {
+            final var policyRuleDevice = (PolicyRuleDevice) policyRuleTypeSpecificType;
+            final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
+
+            alarmDescriptorList = parsePolicyRuleCondition(policyRuleBasic);
+            if (alarmDescriptorList.isEmpty()) {
+                return List.of();
+            }
+            for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
+                alarmPolicyRuleDeviceMap.put(alarmDescriptor.getAlarmId(), policyRuleDevice);
+            }
+        }
+
+        return alarmDescriptorList;
+    }
+
+    private List<AlarmDescriptor> parsePolicyRuleCondition(PolicyRuleBasic policyRuleBasic) {
+        BooleanOperator booleanOperator = policyRuleBasic.getBooleanOperator();
+        if (booleanOperator == BooleanOperator.POLICYRULE_CONDITION_BOOLEAN_OR) {
+            return parsePolicyRuleConditionOr(policyRuleBasic);
+        }
+        if (booleanOperator == BooleanOperator.POLICYRULE_CONDITION_BOOLEAN_AND) {
+            return Arrays.asList(parsePolicyRuleConditionAnd(policyRuleBasic));
+        }
+        return List.of();
+    }
+
+    private List<AlarmDescriptor> parsePolicyRuleConditionOr(PolicyRuleBasic policyRuleBasic) {
+
+        List<PolicyRuleCondition> policyRuleConditions = policyRuleBasic.getPolicyRuleConditions();
+        List<AlarmDescriptor> alarmDescriptorList = new ArrayList<>();
+
+        for (PolicyRuleCondition policyRuleCondition : policyRuleConditions) {
+            var kpiValueRange = convertPolicyRuleConditionToKpiValueRange(policyRuleCondition);
+
+            // TODO: Temp fix for AlarmDescriptor object
+            AlarmDescriptor alarmDescriptor =
+                    new AlarmDescriptor(
+                            "",
+                            "alarmDescription",
+                            "alarmName-" + gen(),
+                            policyRuleCondition.getKpiId(),
+                            kpiValueRange,
+                            getTimeStamp());
+
+            alarmDescriptorList.add(alarmDescriptor);
+        }
+
+        HashMap<String, PolicyRuleAction> policyRuleActionMap = new HashMap<>();
+        List<PolicyRuleAction> policyRuleActions = policyRuleBasic.getPolicyRuleActions();
+
+        for (int i = 0; i < policyRuleActions.size(); i++) {
+            policyRuleActionMap.put(alarmDescriptorList.get(i).getAlarmId(), policyRuleActions.get(i));
+        }
+
+        return alarmDescriptorList;
+    }
+
+    private AlarmDescriptor parsePolicyRuleConditionAnd(PolicyRuleBasic policyRuleBasic) {
+
+        // TODO: KpiIds should be the same. Add check.
+
+        List<PolicyRuleCondition> policyRuleConditionList = policyRuleBasic.getPolicyRuleConditions();
+        List<String> kpisList = new ArrayList<String>();
+
+        for (PolicyRuleCondition policyRuleCondition : policyRuleConditionList) {
+            kpisList.add(policyRuleCondition.getKpiId());
+        }
+
+        if (policyRuleConditionList.size() > 1) {
+            return createAlarmDescriptorWithRange(policyRuleConditionList);
+        }
+
+        return createAlarmDescriptorWithoutRange(policyRuleConditionList.get(0));
+    }
+
+    private AlarmDescriptor createAlarmDescriptorWithRange(
+            List<PolicyRuleCondition> policyRuleConditionList) {
+
+        final var kpiId = policyRuleConditionList.get(0).getKpiId();
+
+        HashMap<String, KpiValueRange> KpiValueRangeMap = new HashMap<>();
+        for (PolicyRuleCondition policyRuleCondition : policyRuleConditionList) {
+
+            if (!KpiValueRangeMap.containsKey(kpiId)) {
+                var kpiValueRange = convertPolicyRuleConditionToKpiValueRange(policyRuleCondition);
+                KpiValueRangeMap.put(kpiId, kpiValueRange);
+                continue;
+            }
+
+            var kpiValueRange = convertPolicyRuleConditionToKpiValueRange(policyRuleCondition);
+            // TODO: Handle combineKpiValueRanges exceptions
+            var combinedKpiValueRange =
+                    combineKpiValueRanges(kpiId, KpiValueRangeMap.get(kpiId), kpiValueRange);
+            KpiValueRangeMap.put(kpiId, combinedKpiValueRange);
+        }
+
+        return new AlarmDescriptor(
+                "",
+                "alarmDescription",
+                "alarmName-" + gen(),
+                kpiId,
+                KpiValueRangeMap.get(kpiId),
+                getTimeStamp());
+    }
+
+    private KpiValueRange convertPolicyRuleConditionToKpiValueRange(
+            PolicyRuleCondition policyRuleCondition) {
+
+        switch (policyRuleCondition.getNumericalOperator()) {
+            case POLICY_RULE_CONDITION_NUMERICAL_EQUAL:
+                return new KpiValueRange(
+                        policyRuleCondition.getKpiValue(), policyRuleCondition.getKpiValue(), true, true, true);
+            case POLICY_RULE_CONDITION_NUMERICAL_NOT_EQUAL:
+                return new KpiValueRange(
+                        policyRuleCondition.getKpiValue(),
+                        policyRuleCondition.getKpiValue(),
+                        true,
+                        false,
+                        false);
+
+            case POLICY_RULE_CONDITION_NUMERICAL_GREATER_THAN:
+                return new KpiValueRange(null, policyRuleCondition.getKpiValue(), true, false, false);
+
+            case POLICY_RULE_CONDITION_NUMERICAL_GREATER_THAN_EQUAL:
+                return new KpiValueRange(null, policyRuleCondition.getKpiValue(), true, true, false);
+
+            case POLICY_RULE_CONDITION_NUMERICAL_LESS_THAN:
+                return new KpiValueRange(policyRuleCondition.getKpiValue(), null, true, false, false);
+
+            case POLICY_RULE_CONDITION_NUMERICAL_LESS_THAN_EQUAL:
+                return new KpiValueRange(policyRuleCondition.getKpiValue(), null, true, false, true);
+            default:
+                return null;
+        }
+    }
+
+    private KpiValueRange combineKpiValueRanges(
+            String kpiId, KpiValueRange firstKpiValueRange, KpiValueRange secondKpiValueRange) {
+        if (secondKpiValueRange.getInRange() == true) {
+            LOGGER.errorf("KpiId: %s, has already range values", kpiId);
+            return null;
+        }
+
+        if ((firstKpiValueRange.getKpiMinValue() != null)
+                && (secondKpiValueRange.getKpiMinValue() != null)) {
+            LOGGER.errorf("KpiId: %s, has already min value", kpiId);
+            return null;
+        }
+
+        if ((firstKpiValueRange.getKpiMaxValue() != null)
+                && (secondKpiValueRange.getKpiMinValue() != null)) {
+            LOGGER.errorf("KpiId: %s, has already max value", kpiId);
+            return null;
+        }
+
+        // Objects.nonNull(secondKpiValueRange);
+
+        var kpiMinValue =
+                firstKpiValueRange.getKpiMinValue() != null
+                        ? firstKpiValueRange.getKpiMinValue()
+                        : secondKpiValueRange.getKpiMinValue();
+        var kpiMaxValue =
+                firstKpiValueRange.getKpiMaxValue() != null
+                        ? firstKpiValueRange.getKpiMaxValue()
+                        : secondKpiValueRange.getKpiMaxValue();
+        boolean includeMinValue =
+                firstKpiValueRange.getIncludeMinValue() || secondKpiValueRange.getIncludeMinValue();
+        boolean includeMaxValue =
+                firstKpiValueRange.getIncludeMaxValue() || secondKpiValueRange.getIncludeMaxValue();
+
+        return new KpiValueRange(kpiMinValue, kpiMaxValue, true, includeMinValue, includeMaxValue);
+    }
+
+    private AlarmDescriptor createAlarmDescriptorWithoutRange(
+            PolicyRuleCondition policyRuleCondition) {
+
+        final var kpiId = policyRuleCondition.getKpiId();
+        final var kpiValueRange = convertPolicyRuleConditionToKpiValueRange(policyRuleCondition);
+
+        return new AlarmDescriptor(
+                "", "alarmDescription", "alarmName-" + gen(), kpiId, kpiValueRange, getTimeStamp());
+    }
+
+    // TODO: To be refactored or deprecated
+    //    private void evaluateAction(
+    //            PolicyRule policyRule,
+    //            List<AlarmDescriptor> alarmDescriptorList,
+    //            Multi<AlarmResponse> multi) {
+    //
+    //        Long count =
+    //                multi
+    //                        .collect()
+    //                        .with(Collectors.counting())
+    //                        .await()
+    //                        .atMost(Duration.ofMinutes(POLICY_EVALUATION_TIMEOUT));
+    //
+    //        if (count > ACCEPTABLE_NUMBER_OF_ALARMS) {
+    //            for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
+    //                monitoringService
+    //                        .deleteAlarm(alarmDescriptor.getAlarmId())
+    //                        .subscribe()
+    //                        .with(
+    //                                emptyMessage ->
+    //                                        LOGGER.infof(
+    //                                                "Alarm [%s] has been deleted as ineffective.\n",
+    //                                                alarmDescriptor.getAlarmId()));
+    //            }
+    //            setPolicyRuleToContext(policyRule, INEFFECTIVE_POLICYRULE_STATE);
+    //        } else {
+    //            setPolicyRuleToContext(policyRule, EFFECTIVE_POLICYRULE_STATE);
+    //        }
+    //    }
+
+    public void applyActionDevice(String alarmId) {
+        PolicyRuleDevice policyRuleDevice = alarmPolicyRuleDeviceMap.get(alarmId);
+
+        if (policyRuleActionMap.get(alarmId).getPolicyRuleActionEnum()
+                == PolicyRuleActionEnum.POLICY_RULE_ACTION_SET_DEVICE_STATUS) {
+            // In case additional PolicyRuleAction for Devices will be added
+        }
+
+        setPolicyRuleDeviceToContext(policyRuleDevice, ACTIVE_POLICYRULE_STATE);
+
+        List<String> deviceIds = policyRuleDevice.getDeviceIds();
+        List<PolicyRuleActionConfig> actionConfigs =
+                policyRuleActionMap.get(alarmId).getPolicyRuleActionConfigs();
+
+        if (deviceIds.size() != actionConfigs.size()) {
+            String message =
+                    String.format(
+                            "The number of action parameters in PolicyRuleDevice with ID: %s, is not aligned with the number of devices.",
+                            policyRuleDevice.getPolicyRuleBasic().getPolicyRuleId());
+            setPolicyRuleDeviceToContext(
+                    policyRuleDevice, new PolicyRuleState(PolicyRuleStateEnum.POLICY_FAILED, message));
+            return;
+        }
+
+        for (var i = 0; i < deviceIds.size(); i++) {
+            activateDevice(deviceIds.get(i), actionConfigs.get(i));
+        }
+
+        setPolicyRuleDeviceToContext(policyRuleDevice, ENFORCED_POLICYRULE_STATE);
+    }
+
+    private void activateDevice(String deviceId, PolicyRuleActionConfig actionConfig) {
+
+        Boolean toBeEnabled;
+        if (actionConfig.getActionKey() == "ENABLED") {
+            toBeEnabled = true;
+        } else if (actionConfig.getActionKey() == "DISABLED") {
+            toBeEnabled = false;
+        } else {
+            LOGGER.errorf(INVALID_MESSAGE, actionConfig.getActionKey());
+            return;
+        }
+
+        final var deserializedDeviceUni = contextService.getDevice(deviceId);
+
+        deserializedDeviceUni
+                .subscribe()
+                .with(
+                        device -> {
+                            if (toBeEnabled && device.isDisabled()) {
+                                device.enableDevice();
+                            } else if (!toBeEnabled && device.isEnabled()) {
+                                device.disableDevice();
+                            } else {
+                                LOGGER.errorf(INVALID_MESSAGE, "Device is already in the desired state");
+                                return;
+                            }
+
+                            deviceService.configureDevice(device);
+                        });
+    }
+
+    private void addServiceConfigRule(
+            PolicyRuleService policyRuleService, PolicyRuleAction policyRuleAction) {
+
+        ConfigActionEnum configActionEnum = ConfigActionEnum.SET;
+        List<PolicyRuleActionConfig> actionConfigs = policyRuleAction.getPolicyRuleActionConfigs();
+        List<ConfigRule> newConfigRules = new ArrayList<>();
+
+        for (PolicyRuleActionConfig actionConfig : actionConfigs) {
+            ConfigRuleCustom configRuleCustom =
+                    new ConfigRuleCustom(actionConfig.getActionKey(), actionConfig.getActionValue());
+            ConfigRuleTypeCustom configRuleType = new ConfigRuleTypeCustom(configRuleCustom);
+            ConfigRule configRule = new ConfigRule(configActionEnum, configRuleType);
+            newConfigRules.add(configRule);
+        }
+
+        var deserializedServiceUni = contextService.getService(policyRuleService.getServiceId());
+        deserializedServiceUni
+                .subscribe()
+                .with(
+                        deserializedService -> {
+                            List<ConfigRule> configRules =
+                                    deserializedService.getServiceConfig().getConfigRules();
+                            configRules.addAll(newConfigRules);
+                            deserializedService.setServiceConfig(new ServiceConfig(configRules));
+                        });
+    }
+
+    private void addServiceConstraint(
+            PolicyRuleService policyRuleService, PolicyRuleAction policyRuleAction) {
+
+        List<PolicyRuleActionConfig> actionConfigs = policyRuleAction.getPolicyRuleActionConfigs();
+        List<Constraint> constraintList = new ArrayList<>();
+
+        for (PolicyRuleActionConfig actionConfig : actionConfigs) {
+            var constraintCustom =
+                    new ConstraintCustom(actionConfig.getActionKey(), actionConfig.getActionValue());
+            var constraintTypeCustom = new ConstraintTypeCustom(constraintCustom);
+            constraintList.add(new Constraint(constraintTypeCustom));
+        }
+
+        final var deserializedServiceUni = contextService.getService(policyRuleService.getServiceId());
+
+        deserializedServiceUni
+                .subscribe()
+                .with(
+                        deserializedService -> {
+                            deserializedService.appendServiceConstraints(constraintList);
+                            serviceService.updateService(deserializedService);
+                            setPolicyRuleServiceToContext(policyRuleService, ENFORCED_POLICYRULE_STATE);
+                        });
+    }
+
+    private void callRecalculatePathRPC(
+            PolicyRuleService policyRuleService, PolicyRuleAction policyRuleAction) {
+
+        final var deserializedServiceUni = contextService.getService(policyRuleService.getServiceId());
+
+        deserializedServiceUni
+                .subscribe()
+                .with(
+                        deserializedService -> {
+                            serviceService
+                                    .recomputeConnections(deserializedService)
+                                    .subscribe()
+                                    .with(
+                                            x -> {
+                                                LOGGER.info("called recomputeConnections with:");
+                                                LOGGER.info(deserializedService);
+                                                setPolicyRuleServiceToContext(policyRuleService, ENFORCED_POLICYRULE_STATE);
+                                            });
+                        });
+    }
+
+    private void setPolicyRuleToContext(PolicyRule policyRule, PolicyRuleState policyRuleState) {
+        final var policyRuleType = policyRule.getPolicyRuleType();
+        final var policyRuleTypeSpecificType = policyRuleType.getPolicyRuleType();
+
+        if (policyRuleTypeSpecificType instanceof PolicyRuleService) {
+            setPolicyRuleServiceToContext(
+                    (PolicyRuleService) policyRuleTypeSpecificType, policyRuleState);
+        }
+        if (policyRuleTypeSpecificType instanceof PolicyRuleDevice) {
+            setPolicyRuleDeviceToContext((PolicyRuleDevice) policyRuleTypeSpecificType, policyRuleState);
+        }
+    }
+
+    public void setPolicyRuleServiceToContext(
+            PolicyRuleService policyRuleService, PolicyRuleState policyRuleState) {
+        LOGGER.infof("Setting Policy Rule state to [%s]", policyRuleState.toString());
+
+        final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
+        policyRuleBasic.setPolicyRuleState(policyRuleState);
+        policyRuleService.setPolicyRuleBasic(policyRuleBasic);
+
+        final var policyRuleTypeService = new PolicyRuleTypeService(policyRuleService);
+        final var policyRule = new PolicyRule(policyRuleTypeService);
+        contextService.setPolicyRule(policyRule).subscribe().with(x -> {});
+    }
+
+    public void setPolicyRuleDeviceToContext(
+            PolicyRuleDevice policyRuleDevice, PolicyRuleState policyRuleState) {
+        LOGGER.infof("Setting Policy Rule state to [%s]", policyRuleState.toString());
+
+        final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
+        policyRuleBasic.setPolicyRuleState(policyRuleState);
+        policyRuleDevice.setPolicyRuleBasic(policyRuleBasic);
+
+        final var policyRuleTypeService = new PolicyRuleTypeDevice(policyRuleDevice);
+        final var policyRule = new PolicyRule(policyRuleTypeService);
+        contextService.setPolicyRule(policyRule).subscribe().with(x -> {});
+    }
+}
diff --git a/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyServiceImpl.java
index c756f8a2a573780ff27295ce710d4acb7379f756..8a3a86508612be54c860f88159af512e7564c33f 100644
--- a/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyServiceImpl.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/policy/PolicyServiceImpl.java
@@ -18,53 +18,18 @@ package org.etsi.tfs.policy.policy;
 
 import static org.etsi.tfs.policy.common.ApplicationProperties.*;
 
-import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
-import io.smallrye.mutiny.groups.UniJoin;
-import io.smallrye.mutiny.subscription.Cancellable;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Function;
 import org.etsi.tfs.policy.context.ContextService;
-import org.etsi.tfs.policy.context.model.ConfigActionEnum;
-import org.etsi.tfs.policy.context.model.ConfigRule;
-import org.etsi.tfs.policy.context.model.ConfigRuleCustom;
-import org.etsi.tfs.policy.context.model.ConfigRuleTypeCustom;
-import org.etsi.tfs.policy.context.model.Constraint;
-import org.etsi.tfs.policy.context.model.ConstraintCustom;
-import org.etsi.tfs.policy.context.model.ConstraintTypeCustom;
-import org.etsi.tfs.policy.context.model.ServiceConfig;
-import org.etsi.tfs.policy.context.model.ServiceId;
-import org.etsi.tfs.policy.device.DeviceService;
 import org.etsi.tfs.policy.exception.ExternalServiceFailureException;
-import org.etsi.tfs.policy.monitoring.MonitoringService;
-import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
-import org.etsi.tfs.policy.monitoring.model.AlarmResponse;
-import org.etsi.tfs.policy.monitoring.model.AlarmSubscription;
-import org.etsi.tfs.policy.monitoring.model.KpiValueRange;
-import org.etsi.tfs.policy.policy.model.BooleanOperator;
 import org.etsi.tfs.policy.policy.model.PolicyRule;
-import org.etsi.tfs.policy.policy.model.PolicyRuleAction;
-import org.etsi.tfs.policy.policy.model.PolicyRuleActionConfig;
-import org.etsi.tfs.policy.policy.model.PolicyRuleActionEnum;
-import org.etsi.tfs.policy.policy.model.PolicyRuleBasic;
-import org.etsi.tfs.policy.policy.model.PolicyRuleCondition;
 import org.etsi.tfs.policy.policy.model.PolicyRuleDevice;
 import org.etsi.tfs.policy.policy.model.PolicyRuleService;
 import org.etsi.tfs.policy.policy.model.PolicyRuleState;
 import org.etsi.tfs.policy.policy.model.PolicyRuleStateEnum;
-import org.etsi.tfs.policy.policy.model.PolicyRuleTypeDevice;
-import org.etsi.tfs.policy.policy.model.PolicyRuleTypeService;
-import org.etsi.tfs.policy.policy.service.PolicyRuleConditionFieldsGetter;
 import org.etsi.tfs.policy.policy.service.PolicyRuleConditionValidator;
-import org.etsi.tfs.policy.service.ServiceService;
 import org.jboss.logging.Logger;
 
 @ApplicationScoped
@@ -72,52 +37,24 @@ public class PolicyServiceImpl implements PolicyService {
 
     private static final Logger LOGGER = Logger.getLogger(PolicyServiceImpl.class);
 
-    private static final int POLICY_EVALUATION_TIMEOUT = 5;
-    private static final int ACCEPTABLE_NUMBER_OF_ALARMS = 3;
-    private static final int MONITORING_WINDOW_IN_SECONDS = 5;
-    private static final int SAMPLING_RATE_PER_SECOND = 1;
-    // TODO: Find a better way to disregard alarms while reconfiguring path
-    // Temporary solution for not calling the same rpc more than it's needed
-    private static int noAlarms = 0;
-
     private final ContextService contextService;
-    private final MonitoringService monitoringService;
-    private final ServiceService serviceService;
-    private final DeviceService deviceService;
     private final PolicyRuleConditionValidator policyRuleConditionValidator;
-    private final PolicyRuleConditionFieldsGetter policyRuleConditionFieldsGetter;
-
-    private HashMap<String, PolicyRuleAction> policyRuleActionMap = new HashMap<>();
-    private ConcurrentHashMap<String, PolicyRuleService> alarmPolicyRuleServiceMap =
-            new ConcurrentHashMap<>();
-    private ConcurrentHashMap<String, PolicyRuleDevice> alarmPolicyRuleDeviceMap =
-            new ConcurrentHashMap<>();
-    private ConcurrentHashMap<String, Cancellable> subscriptionList = new ConcurrentHashMap<>();
+    private final CommonPolicyServiceImpl commonPolicyServiceImpl;
+    private final AddPolicyServiceImpl addPolicyServiceImpl;
+    private final AddPolicyDeviceImpl addPolicyDeviceImpl;
 
     @Inject
     public PolicyServiceImpl(
             ContextService contextService,
-            MonitoringService monitoringService,
-            ServiceService serviceService,
-            DeviceService deviceService,
             PolicyRuleConditionValidator policyRuleConditionValidator,
-            PolicyRuleConditionFieldsGetter policyRuleConditionFieldsGetter) {
+            CommonPolicyServiceImpl commonPolicyServiceImpl,
+            AddPolicyServiceImpl addPolicyServiceImpl,
+            AddPolicyDeviceImpl addPolicyDeviceImpl) {
         this.contextService = contextService;
-        this.monitoringService = monitoringService;
-        this.serviceService = serviceService;
-        this.deviceService = deviceService;
         this.policyRuleConditionValidator = policyRuleConditionValidator;
-        this.policyRuleConditionFieldsGetter = policyRuleConditionFieldsGetter;
-    }
-
-    private static String gen() {
-        Random r = new Random(System.currentTimeMillis());
-        return String.valueOf((1 + r.nextInt(2)) * 10000 + r.nextInt(10000));
-    }
-
-    private static double getTimeStamp() {
-        long now = Instant.now().getEpochSecond();
-        return Long.valueOf(now).doubleValue();
+        this.commonPolicyServiceImpl = commonPolicyServiceImpl;
+        this.addPolicyServiceImpl = addPolicyServiceImpl;
+        this.addPolicyDeviceImpl = addPolicyDeviceImpl;
     }
 
     @Override
@@ -152,128 +89,11 @@ public class PolicyServiceImpl implements PolicyService {
                 .onItem()
                 .transform(
                         isService ->
-                                constructPolicyStateBasedOnCriteria(
+                                addPolicyServiceImpl.constructPolicyStateBasedOnCriteria(
                                         isService, serviceId, policyRuleService, policyRuleBasic))
                 .flatMap(Function.identity());
     }
 
-    private Uni<PolicyRuleState> constructPolicyStateBasedOnCriteria(
-            Boolean isService,
-            ServiceId serviceId,
-            PolicyRuleService policyRuleService,
-            PolicyRuleBasic policyRuleBasic) {
-
-        if (!isService) {
-            var policyRuleState =
-                    new PolicyRuleState(
-                            PolicyRuleStateEnum.POLICY_FAILED, String.format(INVALID_MESSAGE, serviceId));
-
-            return Uni.createFrom().item(policyRuleState);
-        }
-
-        final var policyRuleTypeService = new PolicyRuleTypeService(policyRuleService);
-        final var policyRule = new PolicyRule(policyRuleTypeService);
-        final var alarmDescriptorList = createAlarmDescriptorList(policyRule);
-
-        if (alarmDescriptorList.isEmpty()) {
-            var policyRuleState =
-                    new PolicyRuleState(
-                            PolicyRuleStateEnum.POLICY_FAILED,
-                            String.format(
-                                    "Invalid PolicyRuleConditions in PolicyRule with ID: %s",
-                                    policyRuleBasic.getPolicyRuleId()));
-            return Uni.createFrom().item(policyRuleState);
-        }
-
-        return setPolicyRuleOnContextAndReturnState(policyRule, policyRuleService, alarmDescriptorList);
-    }
-
-    private Uni<PolicyRuleState> setPolicyRuleOnContextAndReturnState(
-            PolicyRule policyRule,
-            PolicyRuleService policyRuleService,
-            List<AlarmDescriptor> alarmDescriptorList) {
-        return contextService
-                .setPolicyRule(policyRule)
-                .onFailure()
-                .transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
-                .onItem()
-                .transform(
-                        policyId -> {
-                            startMonitoringBasedOnAlarmDescriptors(
-                                    policyId, policyRuleService, alarmDescriptorList);
-
-                            return VALIDATED_POLICYRULE_STATE;
-                        });
-    }
-
-    private void startMonitoringBasedOnAlarmDescriptors(
-            String policyId,
-            PolicyRuleService policyRuleService,
-            List<AlarmDescriptor> alarmDescriptorList) {
-        setPolicyRuleServiceToContext(policyRuleService, VALIDATED_POLICYRULE_STATE);
-        noAlarms = 0;
-
-        List<Uni<String>> alarmIds =
-                createAlarmList(alarmDescriptorList); // setAllarmtomonitoring get back alarmid
-
-        List<Multi<AlarmResponse>> alarmResponseStreamList =
-                transformAlarmIds(alarmIds, policyRuleService);
-
-        // Merge the promised alarms into one stream (Multi Object)
-        final var multi = Multi.createBy().merging().streams(alarmResponseStreamList);
-        setPolicyRuleServiceToContext(policyRuleService, PROVISIONED_POLICYRULE_STATE);
-
-        subscriptionList.put(policyId, monitorAlarmResponseForService(multi));
-
-        // TODO: Resubscribe to the stream, if it has ended
-
-        // TODO: Redesign evaluation of action
-        // evaluateAction(policyRule, alarmDescriptorList, multi);
-    }
-
-    /**
-    * Transform the alarmIds into promised alarms returned from the getAlarmResponseStream
-    *
-    * @param alarmIds the list of alarm ids
-    * @param policyRuleService the policy rule service
-    * @return
-    */
-    private List<Multi<AlarmResponse>> transformAlarmIds(
-            List<Uni<String>> alarmIds, PolicyRuleService policyRuleService) {
-        List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>();
-        for (Uni<String> alarmId : alarmIds) {
-            Multi<AlarmResponse> alarmResponseStream =
-                    alarmId.onItem().transformToMulti(id -> setPolicyMonitor(policyRuleService, id));
-
-            alarmResponseStreamList.add(alarmResponseStream);
-        }
-        return alarmResponseStreamList;
-    }
-
-    private Multi<AlarmResponse> setPolicyMonitor(PolicyRuleService policyRuleService, String id) {
-        alarmPolicyRuleServiceMap.put(id, policyRuleService);
-
-        // TODO: Create infinite subscription
-        var alarmSubscription = new AlarmSubscription(id, 259200, 5000);
-        return monitoringService.getAlarmResponseStream(alarmSubscription);
-    }
-
-    /**
-    * Create an alarmIds list that contains the promised ids returned from setKpiAlarm
-    *
-    * @param alarmDescriptorList the list of alarm descriptors
-    * @return the list of alarm descriptors
-    */
-    public List<Uni<String>> createAlarmList(List<AlarmDescriptor> alarmDescriptorList) {
-        List<Uni<String>> alarmIds = new ArrayList<Uni<String>>();
-        for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
-            LOGGER.infof("alarmDescriptor:");
-            LOGGER.infof(alarmDescriptor.toString());
-            alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor));
-        }
-        return alarmIds;
-    }
-
     @Override
     public Uni<PolicyRuleState> addPolicyDevice(PolicyRuleDevice policyRuleDevice) {
         LOGGER.infof("Received %s", policyRuleDevice);
@@ -297,110 +117,17 @@ public class PolicyServiceImpl implements PolicyService {
         }
 
         final var deviceIds = policyRuleDevice.getDeviceIds();
-        final var areDevicesValid = returnInvalidDeviceIds(deviceIds);
+        final var areDevicesValid = addPolicyDeviceImpl.returnInvalidDeviceIds(deviceIds);
 
         return areDevicesValid
-                .onFailure()
-                .transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
-                .onItem()
-                .transform(areDevices -> areDeviceOnContext(areDevices, policyRuleDevice, policyRuleBasic))
-                .flatMap(Function.identity());
-    }
-
-    private Uni<PolicyRuleState> areDeviceOnContext(
-            List<Boolean> areDevices,
-            PolicyRuleDevice policyRuleDevice,
-            PolicyRuleBasic policyRuleBasic) {
-        if (areDevices.contains(false)) {
-            var policyRuleState =
-                    new PolicyRuleState(
-                            PolicyRuleStateEnum.POLICY_FAILED,
-                            String.format(
-                                    INVALID_MESSAGE, policyRuleDevice.getPolicyRuleBasic().getPolicyRuleId()));
-
-            return Uni.createFrom().item(policyRuleState);
-        }
-
-        final var policyRuleTypeDevice = new PolicyRuleTypeDevice(policyRuleDevice);
-        final var policyRule = new PolicyRule(policyRuleTypeDevice);
-
-        final var alarmDescriptorList = createAlarmDescriptorList(policyRule);
-        if (alarmDescriptorList.isEmpty()) {
-            var policyRuleState =
-                    new PolicyRuleState(
-                            PolicyRuleStateEnum.POLICY_FAILED,
-                            String.format(
-                                    "Invalid PolicyRuleConditions in PolicyRule with ID: %s",
-                                    policyRuleBasic.getPolicyRuleId()));
-            return Uni.createFrom().item(policyRuleState);
-        }
-
-        return contextService
-                .setPolicyRule(policyRule)
                 .onFailure()
                 .transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
                 .onItem()
                 .transform(
-                        policyId -> {
-                            startMonitoringBasedOnAlarmDescriptors(
-                                    policyId, policyRuleDevice, alarmDescriptorList);
-                            return VALIDATED_POLICYRULE_STATE;
-                        });
-    }
-
-    private void startMonitoringBasedOnAlarmDescriptors(
-            String policyId,
-            PolicyRuleDevice policyRuleDevice,
-            List<AlarmDescriptor> alarmDescriptorList) {
-        setPolicyRuleDeviceToContext(policyRuleDevice, VALIDATED_POLICYRULE_STATE);
-        noAlarms = 0;
-
-        List<Uni<String>> alarmIds = getAlarmIds(alarmDescriptorList);
-
-        List<Multi<AlarmResponse>> alarmResponseStreamList =
-                getAlarmResponse(alarmIds, policyRuleDevice);
-
-        // Merge the promised alarms into one stream (Multi Object)
-        final var multi = Multi.createBy().merging().streams(alarmResponseStreamList);
-        setPolicyRuleDeviceToContext(policyRuleDevice, PROVISIONED_POLICYRULE_STATE);
-
-        subscriptionList.put(policyId, monitorAlarmResponseForDevice(multi));
-
-        // TODO: Resubscribe to the stream, if it has ended
-
-        // TODO: Redesign evaluation of action
-        // evaluateAction(policyRule, alarmDescriptorList, multi);
-    }
-
-    private List<Multi<AlarmResponse>> getAlarmResponse(
-            List<Uni<String>> alarmIds, PolicyRuleDevice policyRuleDevice) {
-        // Transform the alarmIds into promised alarms returned from the
-        // getAlarmResponseStream
-        List<Multi<AlarmResponse>> alarmResponseStreamList = new ArrayList<>();
-        for (Uni<String> alarmId : alarmIds) {
-            alarmResponseStreamList.add(
-                    alarmId.onItem().transformToMulti(id -> setPolicyMonitoringDevice(policyRuleDevice, id)));
-        }
-        return alarmResponseStreamList;
-    }
-
-    private Multi<AlarmResponse> setPolicyMonitoringDevice(
-            PolicyRuleDevice policyRuleDevice, String id) {
-        alarmPolicyRuleDeviceMap.put(id, policyRuleDevice);
-
-        // TODO: Create infinite subscription
-        var alarmSubscription = new AlarmSubscription(id, 259200, 5000);
-        return monitoringService.getAlarmResponseStream(alarmSubscription);
-    }
-
-    private List<Uni<String>> getAlarmIds(List<AlarmDescriptor> alarmDescriptorList) {
-        List<Uni<String>> alarmIds = new ArrayList<Uni<String>>();
-        for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
-            LOGGER.infof("alarmDescriptor:");
-            LOGGER.infof(alarmDescriptor.toString());
-            alarmIds.add(monitoringService.setKpiAlarm(alarmDescriptor));
-        }
-        return alarmIds;
+                        areDevices ->
+                                addPolicyDeviceImpl.areDeviceOnContext(
+                                        areDevices, policyRuleDevice, policyRuleBasic))
+                .flatMap(Function.identity());
     }
 
     @Override
@@ -471,6 +198,8 @@ public class PolicyServiceImpl implements PolicyService {
                 policyRuleConditionValidator.isUpdatedPolicyRuleIdValid(policyRuleId);
 
         return isPolicyRuleValid
+                .onFailure()
+                .transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
                 .onItem()
                 .transform(
                         isPolicyRuleService -> {
@@ -504,6 +233,8 @@ public class PolicyServiceImpl implements PolicyService {
 
         contextService
                 .setPolicyRule(policyRule)
+                .onFailure()
+                .transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
                 .subscribe()
                 .with(
                         tmp ->
@@ -513,471 +244,9 @@ public class PolicyServiceImpl implements PolicyService {
         contextService.removePolicyRule(policyId).subscribe().with(x -> {});
 
         // TODO: When the Map doesn't contains the policyId we should throw an exception?
-        if (subscriptionList.contains(policyId)) subscriptionList.get(policyId).cancel();
+        if (commonPolicyServiceImpl.getSubscriptionList().contains(policyId))
+            commonPolicyServiceImpl.getSubscriptionList().get(policyId).cancel();
 
         return policyRuleBasic.getPolicyRuleState();
     }
-
-    private Uni<List<Boolean>> returnInvalidDeviceIds(List<String> deviceIds) {
-        UniJoin.Builder<Boolean> builder = Uni.join().builder();
-        for (String deviceId : deviceIds) {
-            final var validatedDeviceId = policyRuleConditionValidator.isDeviceIdValid(deviceId);
-            builder.add(validatedDeviceId);
-        }
-        return builder.joinAll().andFailFast();
-    }
-
-    private List<AlarmDescriptor> createAlarmDescriptorList(PolicyRule policyRule) {
-        final var policyRuleType = policyRule.getPolicyRuleType();
-        final var policyRuleTypeSpecificType = policyRuleType.getPolicyRuleType();
-
-        List<AlarmDescriptor> alarmDescriptorList = new ArrayList<>();
-        if (policyRuleTypeSpecificType instanceof PolicyRuleService) {
-            final var policyRuleService = (PolicyRuleService) policyRuleTypeSpecificType;
-            final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
-
-            alarmDescriptorList = parsePolicyRuleCondition(policyRuleBasic);
-            if (alarmDescriptorList.isEmpty()) {
-                return List.of();
-            }
-        } else {
-            final var policyRuleDevice = (PolicyRuleDevice) policyRuleTypeSpecificType;
-            final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
-
-            alarmDescriptorList = parsePolicyRuleCondition(policyRuleBasic);
-            if (alarmDescriptorList.isEmpty()) {
-                return List.of();
-            }
-            for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
-                alarmPolicyRuleDeviceMap.put(alarmDescriptor.getAlarmId(), policyRuleDevice);
-            }
-        }
-
-        return alarmDescriptorList;
-    }
-
-    private Cancellable monitorAlarmResponseForService(Multi<AlarmResponse> multi) {
-        return multi
-                .subscribe()
-                .with(
-                        alarmResponse -> {
-                            LOGGER.infof("**************************Received Alarm!**************************");
-                            LOGGER.infof("alarmResponse:");
-                            LOGGER.info(alarmResponse);
-                            LOGGER.info(alarmResponse.getAlarmId());
-                            applyActionService(alarmResponse.getAlarmId());
-                        });
-    }
-
-    private Cancellable monitorAlarmResponseForDevice(Multi<AlarmResponse> multi) {
-        return multi
-                .subscribe()
-                .with(
-                        alarmResponse -> {
-                            LOGGER.infof("**************************Received Alarm!**************************");
-                            LOGGER.infof("alarmResponse:");
-                            LOGGER.info(alarmResponse);
-                            LOGGER.info(alarmResponse.getAlarmId());
-                            applyActionDevice(alarmResponse.getAlarmId());
-                        });
-    }
-
-    // TODO: To be refactored or deprecated
-    //    private void evaluateAction(
-    //            PolicyRule policyRule,
-    //            List<AlarmDescriptor> alarmDescriptorList,
-    //            Multi<AlarmResponse> multi) {
-    //
-    //        Long count =
-    //                multi
-    //                        .collect()
-    //                        .with(Collectors.counting())
-    //                        .await()
-    //                        .atMost(Duration.ofMinutes(POLICY_EVALUATION_TIMEOUT));
-    //
-    //        if (count > ACCEPTABLE_NUMBER_OF_ALARMS) {
-    //            for (AlarmDescriptor alarmDescriptor : alarmDescriptorList) {
-    //                monitoringService
-    //                        .deleteAlarm(alarmDescriptor.getAlarmId())
-    //                        .subscribe()
-    //                        .with(
-    //                                emptyMessage ->
-    //                                        LOGGER.infof(
-    //                                                "Alarm [%s] has been deleted as ineffective.\n",
-    //                                                alarmDescriptor.getAlarmId()));
-    //            }
-    //            setPolicyRuleToContext(policyRule, INEFFECTIVE_POLICYRULE_STATE);
-    //        } else {
-    //            setPolicyRuleToContext(policyRule, EFFECTIVE_POLICYRULE_STATE);
-    //        }
-    //    }
-
-    private void applyActionDevice(String alarmId) {
-        PolicyRuleDevice policyRuleDevice = alarmPolicyRuleDeviceMap.get(alarmId);
-
-        if (policyRuleActionMap.get(alarmId).getPolicyRuleActionEnum()
-                == PolicyRuleActionEnum.POLICY_RULE_ACTION_SET_DEVICE_STATUS) {
-            // In case additional PolicyRuleAction for Devices will be added
-        }
-
-        setPolicyRuleDeviceToContext(policyRuleDevice, ACTIVE_POLICYRULE_STATE);
-
-        List<String> deviceIds = policyRuleDevice.getDeviceIds();
-        List<PolicyRuleActionConfig> actionConfigs =
-                policyRuleActionMap.get(alarmId).getPolicyRuleActionConfigs();
-
-        if (deviceIds.size() != actionConfigs.size()) {
-            String message =
-                    String.format(
-                            "The number of action parameters in PolicyRuleDevice with ID: %s, is not aligned with the number of devices.",
-                            policyRuleDevice.getPolicyRuleBasic().getPolicyRuleId());
-            setPolicyRuleDeviceToContext(
-                    policyRuleDevice, new PolicyRuleState(PolicyRuleStateEnum.POLICY_FAILED, message));
-            return;
-        }
-
-        for (var i = 0; i < deviceIds.size(); i++) {
-            activateDevice(deviceIds.get(i), actionConfigs.get(i));
-        }
-
-        setPolicyRuleDeviceToContext(policyRuleDevice, ENFORCED_POLICYRULE_STATE);
-    }
-
-    private void activateDevice(String deviceId, PolicyRuleActionConfig actionConfig) {
-
-        Boolean toBeEnabled;
-        if (actionConfig.getActionKey() == "ENABLED") {
-            toBeEnabled = true;
-        } else if (actionConfig.getActionKey() == "DISABLED") {
-            toBeEnabled = false;
-        } else {
-            LOGGER.errorf(INVALID_MESSAGE, actionConfig.getActionKey());
-            return;
-        }
-
-        final var deserializedDeviceUni = contextService.getDevice(deviceId);
-
-        deserializedDeviceUni
-                .subscribe()
-                .with(
-                        device -> {
-                            if (toBeEnabled && device.isDisabled()) {
-                                device.enableDevice();
-                            } else if (!toBeEnabled && device.isEnabled()) {
-                                device.disableDevice();
-                            } else {
-                                LOGGER.errorf(INVALID_MESSAGE, "Device is already in the desired state");
-                                return;
-                            }
-
-                            deviceService.configureDevice(device);
-                        });
-    }
-
-    private void addServiceConfigRule(
-            PolicyRuleService policyRuleService, PolicyRuleAction policyRuleAction) {
-
-        ConfigActionEnum configActionEnum = ConfigActionEnum.SET;
-        List<PolicyRuleActionConfig> actionConfigs = policyRuleAction.getPolicyRuleActionConfigs();
-        List<ConfigRule> newConfigRules = new ArrayList<>();
-
-        for (PolicyRuleActionConfig actionConfig : actionConfigs) {
-            ConfigRuleCustom configRuleCustom =
-                    new ConfigRuleCustom(actionConfig.getActionKey(), actionConfig.getActionValue());
-            ConfigRuleTypeCustom configRuleType = new ConfigRuleTypeCustom(configRuleCustom);
-            ConfigRule configRule = new ConfigRule(configActionEnum, configRuleType);
-            newConfigRules.add(configRule);
-        }
-
-        var deserializedServiceUni = contextService.getService(policyRuleService.getServiceId());
-        deserializedServiceUni
-                .subscribe()
-                .with(
-                        deserializedService -> {
-                            List<ConfigRule> configRules =
-                                    deserializedService.getServiceConfig().getConfigRules();
-                            configRules.addAll(newConfigRules);
-                            deserializedService.setServiceConfig(new ServiceConfig(configRules));
-                        });
-    }
-
-    private void addServiceConstraint(
-            PolicyRuleService policyRuleService, PolicyRuleAction policyRuleAction) {
-
-        List<PolicyRuleActionConfig> actionConfigs = policyRuleAction.getPolicyRuleActionConfigs();
-        List<Constraint> constraintList = new ArrayList<>();
-
-        for (PolicyRuleActionConfig actionConfig : actionConfigs) {
-            var constraintCustom =
-                    new ConstraintCustom(actionConfig.getActionKey(), actionConfig.getActionValue());
-            var constraintTypeCustom = new ConstraintTypeCustom(constraintCustom);
-            constraintList.add(new Constraint(constraintTypeCustom));
-        }
-
-        final var deserializedServiceUni = contextService.getService(policyRuleService.getServiceId());
-
-        deserializedServiceUni
-                .subscribe()
-                .with(
-                        deserializedService -> {
-                            deserializedService.appendServiceConstraints(constraintList);
-                            serviceService.updateService(deserializedService);
-                            setPolicyRuleServiceToContext(policyRuleService, ENFORCED_POLICYRULE_STATE);
-                        });
-    }
-
-    private void callRecalculatePathRPC(
-            PolicyRuleService policyRuleService, PolicyRuleAction policyRuleAction) {
-
-        final var deserializedServiceUni = contextService.getService(policyRuleService.getServiceId());
-
-        deserializedServiceUni
-                .subscribe()
-                .with(
-                        deserializedService -> {
-                            serviceService
-                                    .recomputeConnections(deserializedService)
-                                    .subscribe()
-                                    .with(
-                                            x -> {
-                                                LOGGER.info("called recomputeConnections with:");
-                                                LOGGER.info(deserializedService);
-                                                setPolicyRuleServiceToContext(policyRuleService, ENFORCED_POLICYRULE_STATE);
-                                            });
-                        });
-    }
-
-    private void applyActionService(String alarmId) {
-        PolicyRuleService policyRuleService = alarmPolicyRuleServiceMap.get(alarmId);
-        PolicyRuleAction policyRuleAction =
-                policyRuleService.getPolicyRuleBasic().getPolicyRuleActions().get(0);
-
-        if (noAlarms == 0) {
-            noAlarms++;
-            setPolicyRuleServiceToContext(policyRuleService, ACTIVE_POLICYRULE_STATE);
-
-            switch (policyRuleAction.getPolicyRuleActionEnum()) {
-                case POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT:
-                    addServiceConstraint(policyRuleService, policyRuleAction);
-                case POLICY_RULE_ACTION_ADD_SERVICE_CONFIGRULE:
-                    addServiceConfigRule(policyRuleService, policyRuleAction);
-                case POLICY_RULE_ACTION_RECALCULATE_PATH:
-                    callRecalculatePathRPC(policyRuleService, policyRuleAction);
-                default:
-                    LOGGER.errorf(INVALID_MESSAGE, policyRuleAction.getPolicyRuleActionEnum());
-                    return;
-            }
-        } else if (noAlarms == 2) {
-            noAlarms = 0;
-        } else {
-            noAlarms++;
-        }
-    }
-
-    private List<AlarmDescriptor> parsePolicyRuleCondition(PolicyRuleBasic policyRuleBasic) {
-        BooleanOperator booleanOperator = policyRuleBasic.getBooleanOperator();
-        if (booleanOperator == BooleanOperator.POLICYRULE_CONDITION_BOOLEAN_OR) {
-            return parsePolicyRuleConditionOr(policyRuleBasic);
-        }
-        if (booleanOperator == BooleanOperator.POLICYRULE_CONDITION_BOOLEAN_AND) {
-            return Arrays.asList(parsePolicyRuleConditionAnd(policyRuleBasic));
-        }
-        return List.of();
-    }
-
-    private List<AlarmDescriptor> parsePolicyRuleConditionOr(PolicyRuleBasic policyRuleBasic) {
-
-        List<PolicyRuleCondition> policyRuleConditions = policyRuleBasic.getPolicyRuleConditions();
-        List<AlarmDescriptor> alarmDescriptorList = new ArrayList<>();
-
-        for (PolicyRuleCondition policyRuleCondition : policyRuleConditions) {
-            var kpiValueRange = convertPolicyRuleConditionToKpiValueRange(policyRuleCondition);
-
-            // TODO: Temp fix for AlarmDescriptor object
-            AlarmDescriptor alarmDescriptor =
-                    new AlarmDescriptor(
-                            "",
-                            "alarmDescription",
-                            "alarmName-" + gen(),
-                            policyRuleCondition.getKpiId(),
-                            kpiValueRange,
-                            getTimeStamp());
-
-            alarmDescriptorList.add(alarmDescriptor);
-        }
-
-        HashMap<String, PolicyRuleAction> policyRuleActionMap = new HashMap<>();
-        List<PolicyRuleAction> policyRuleActions = policyRuleBasic.getPolicyRuleActions();
-
-        for (int i = 0; i < policyRuleActions.size(); i++) {
-            policyRuleActionMap.put(alarmDescriptorList.get(i).getAlarmId(), policyRuleActions.get(i));
-        }
-
-        return alarmDescriptorList;
-    }
-
-    private AlarmDescriptor parsePolicyRuleConditionAnd(PolicyRuleBasic policyRuleBasic) {
-
-        // TODO: KpiIds should be the same. Add check.
-
-        List<PolicyRuleCondition> policyRuleConditionList = policyRuleBasic.getPolicyRuleConditions();
-        List<String> kpisList = new ArrayList<String>();
-
-        for (PolicyRuleCondition policyRuleCondition : policyRuleConditionList) {
-            kpisList.add(policyRuleCondition.getKpiId());
-        }
-
-        if (policyRuleConditionList.size() > 1) {
-            return createAlarmDescriptorWithRange(policyRuleConditionList);
-        }
-
-        return createAlarmDescriptorWithoutRange(policyRuleConditionList.get(0));
-    }
-
-    private AlarmDescriptor createAlarmDescriptorWithoutRange(
-            PolicyRuleCondition policyRuleCondition) {
-
-        final var kpiId = policyRuleCondition.getKpiId();
-        final var kpiValueRange = convertPolicyRuleConditionToKpiValueRange(policyRuleCondition);
-
-        return new AlarmDescriptor(
-                "", "alarmDescription", "alarmName-" + gen(), kpiId, kpiValueRange, getTimeStamp());
-    }
-
-    private AlarmDescriptor createAlarmDescriptorWithRange(
-            List<PolicyRuleCondition> policyRuleConditionList) {
-
-        final var kpiId = policyRuleConditionList.get(0).getKpiId();
-
-        HashMap<String, KpiValueRange> KpiValueRangeMap = new HashMap<>();
-        for (PolicyRuleCondition policyRuleCondition : policyRuleConditionList) {
-
-            if (!KpiValueRangeMap.containsKey(kpiId)) {
-                var kpiValueRange = convertPolicyRuleConditionToKpiValueRange(policyRuleCondition);
-                KpiValueRangeMap.put(kpiId, kpiValueRange);
-                continue;
-            }
-
-            var kpiValueRange = convertPolicyRuleConditionToKpiValueRange(policyRuleCondition);
-            // TODO: Handle combineKpiValueRanges exceptions
-            var combinedKpiValueRange =
-                    combineKpiValueRanges(kpiId, KpiValueRangeMap.get(kpiId), kpiValueRange);
-            KpiValueRangeMap.put(kpiId, combinedKpiValueRange);
-        }
-
-        return new AlarmDescriptor(
-                "",
-                "alarmDescription",
-                "alarmName-" + gen(),
-                kpiId,
-                KpiValueRangeMap.get(kpiId),
-                getTimeStamp());
-    }
-
-    private KpiValueRange convertPolicyRuleConditionToKpiValueRange(
-            PolicyRuleCondition policyRuleCondition) {
-
-        switch (policyRuleCondition.getNumericalOperator()) {
-            case POLICY_RULE_CONDITION_NUMERICAL_EQUAL:
-                return new KpiValueRange(
-                        policyRuleCondition.getKpiValue(), policyRuleCondition.getKpiValue(), true, true, true);
-            case POLICY_RULE_CONDITION_NUMERICAL_NOT_EQUAL:
-                return new KpiValueRange(
-                        policyRuleCondition.getKpiValue(),
-                        policyRuleCondition.getKpiValue(),
-                        true,
-                        false,
-                        false);
-
-            case POLICY_RULE_CONDITION_NUMERICAL_GREATER_THAN:
-                return new KpiValueRange(null, policyRuleCondition.getKpiValue(), true, false, false);
-
-            case POLICY_RULE_CONDITION_NUMERICAL_GREATER_THAN_EQUAL:
-                return new KpiValueRange(null, policyRuleCondition.getKpiValue(), true, true, false);
-
-            case POLICY_RULE_CONDITION_NUMERICAL_LESS_THAN:
-                return new KpiValueRange(policyRuleCondition.getKpiValue(), null, true, false, false);
-
-            case POLICY_RULE_CONDITION_NUMERICAL_LESS_THAN_EQUAL:
-                return new KpiValueRange(policyRuleCondition.getKpiValue(), null, true, false, true);
-            default:
-                return null;
-        }
-    }
-
-    private KpiValueRange combineKpiValueRanges(
-            String kpiId, KpiValueRange firstKpiValueRange, KpiValueRange secondKpiValueRange) {
-        if (secondKpiValueRange.getInRange() == true) {
-            LOGGER.errorf("KpiId: %s, has already range values", kpiId);
-            return null;
-        }
-
-        if ((firstKpiValueRange.getKpiMinValue() != null)
-                && (secondKpiValueRange.getKpiMinValue() != null)) {
-            LOGGER.errorf("KpiId: %s, has already min value", kpiId);
-            return null;
-        }
-
-        if ((firstKpiValueRange.getKpiMaxValue() != null)
-                && (secondKpiValueRange.getKpiMinValue() != null)) {
-            LOGGER.errorf("KpiId: %s, has already max value", kpiId);
-            return null;
-        }
-
-        // Objects.nonNull(secondKpiValueRange);
-
-        var kpiMinValue =
-                firstKpiValueRange.getKpiMinValue() != null
-                        ? firstKpiValueRange.getKpiMinValue()
-                        : secondKpiValueRange.getKpiMinValue();
-        var kpiMaxValue =
-                firstKpiValueRange.getKpiMaxValue() != null
-                        ? firstKpiValueRange.getKpiMaxValue()
-                        : secondKpiValueRange.getKpiMaxValue();
-        boolean includeMinValue =
-                firstKpiValueRange.getIncludeMinValue() || secondKpiValueRange.getIncludeMinValue();
-        boolean includeMaxValue =
-                firstKpiValueRange.getIncludeMaxValue() || secondKpiValueRange.getIncludeMaxValue();
-
-        return new KpiValueRange(kpiMinValue, kpiMaxValue, true, includeMinValue, includeMaxValue);
-    }
-
-    private void setPolicyRuleToContext(PolicyRule policyRule, PolicyRuleState policyRuleState) {
-        final var policyRuleType = policyRule.getPolicyRuleType();
-        final var policyRuleTypeSpecificType = policyRuleType.getPolicyRuleType();
-
-        if (policyRuleTypeSpecificType instanceof PolicyRuleService) {
-            setPolicyRuleServiceToContext(
-                    (PolicyRuleService) policyRuleTypeSpecificType, policyRuleState);
-        }
-        if (policyRuleTypeSpecificType instanceof PolicyRuleDevice) {
-            setPolicyRuleDeviceToContext((PolicyRuleDevice) policyRuleTypeSpecificType, policyRuleState);
-        }
-    }
-
-    private void setPolicyRuleServiceToContext(
-            PolicyRuleService policyRuleService, PolicyRuleState policyRuleState) {
-        LOGGER.infof("Setting Policy Rule state to [%s]", policyRuleState.toString());
-
-        final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
-        policyRuleBasic.setPolicyRuleState(policyRuleState);
-        policyRuleService.setPolicyRuleBasic(policyRuleBasic);
-
-        final var policyRuleTypeService = new PolicyRuleTypeService(policyRuleService);
-        final var policyRule = new PolicyRule(policyRuleTypeService);
-        contextService.setPolicyRule(policyRule).subscribe().with(x -> {});
-    }
-
-    private void setPolicyRuleDeviceToContext(
-            PolicyRuleDevice policyRuleDevice, PolicyRuleState policyRuleState) {
-        LOGGER.infof("Setting Policy Rule state to [%s]", policyRuleState.toString());
-
-        final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
-        policyRuleBasic.setPolicyRuleState(policyRuleState);
-        policyRuleDevice.setPolicyRuleBasic(policyRuleBasic);
-
-        final var policyRuleTypeService = new PolicyRuleTypeDevice(policyRuleDevice);
-        final var policyRule = new PolicyRule(policyRuleTypeService);
-        contextService.setPolicyRule(policyRule).subscribe().with(x -> {});
-    }
 }
diff --git a/src/policy/src/test/java/org/etsi/tfs/policy/SerializerTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/SerializerTest.java
index 396706f36bbf4b575ba08761cf3d088b7647c4a7..0d89e6b404e09fe8f38be8cddf98f5609dac354b 100644
--- a/src/policy/src/test/java/org/etsi/tfs/policy/SerializerTest.java
+++ b/src/policy/src/test/java/org/etsi/tfs/policy/SerializerTest.java
@@ -3618,7 +3618,8 @@ class SerializerTest {
                         DeviceDriverEnum.GNMI_OPENCONFIG,
                         ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_GNMI_OPENCONFIG),
                 Arguments.of(
-                        DeviceDriverEnum.FLEXSCALE, ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_FLEXSCALE),
+                        DeviceDriverEnum.OPTICAL_TFS,
+                        ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_OPTICAL_TFS),
                 Arguments.of(
                         DeviceDriverEnum.IETF_ACTN, ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_IETF_ACTN),
                 Arguments.of(
diff --git a/src/policy/target/generated-sources/grpc/acl/Acl.java b/src/policy/target/generated-sources/grpc/acl/Acl.java
index cba5f55d7620c589307ed15fd548ce386cbc6ff0..f1895fa7206642f8f8d6b63f5d2635fb68816f89 100644
--- a/src/policy/target/generated-sources/grpc/acl/Acl.java
+++ b/src/policy/target/generated-sources/grpc/acl/Acl.java
@@ -485,6 +485,86 @@ public final class Acl {
             return new AclMatch();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AclMatch(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                dscp_ = input.readUInt32();
+                                break;
+                            }
+                        case 16:
+                            {
+                                protocol_ = input.readUInt32();
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                srcAddress_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                dstAddress_ = s;
+                                break;
+                            }
+                        case 40:
+                            {
+                                srcPort_ = input.readUInt32();
+                                break;
+                            }
+                        case 48:
+                            {
+                                dstPort_ = input.readUInt32();
+                                break;
+                            }
+                        case 56:
+                            {
+                                startMplsLabel_ = input.readUInt32();
+                                break;
+                            }
+                        case 64:
+                            {
+                                endMplsLabel_ = input.readUInt32();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return acl.Acl.internal_static_acl_AclMatch_descriptor;
         }
@@ -496,7 +576,7 @@ public final class Acl {
 
         public static final int DSCP_FIELD_NUMBER = 1;
 
-        private int dscp_ = 0;
+        private int dscp_;
 
         /**
          * <code>uint32 dscp = 1;</code>
@@ -509,7 +589,7 @@ public final class Acl {
 
         public static final int PROTOCOL_FIELD_NUMBER = 2;
 
-        private int protocol_ = 0;
+        private int protocol_;
 
         /**
          * <code>uint32 protocol = 2;</code>
@@ -522,8 +602,7 @@ public final class Acl {
 
         public static final int SRC_ADDRESS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object srcAddress_ = "";
+        private volatile java.lang.Object srcAddress_;
 
         /**
          * <code>string src_address = 3;</code>
@@ -560,8 +639,7 @@ public final class Acl {
 
         public static final int DST_ADDRESS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object dstAddress_ = "";
+        private volatile java.lang.Object dstAddress_;
 
         /**
          * <code>string dst_address = 4;</code>
@@ -598,7 +676,7 @@ public final class Acl {
 
         public static final int SRC_PORT_FIELD_NUMBER = 5;
 
-        private int srcPort_ = 0;
+        private int srcPort_;
 
         /**
          * <code>uint32 src_port = 5;</code>
@@ -611,7 +689,7 @@ public final class Acl {
 
         public static final int DST_PORT_FIELD_NUMBER = 6;
 
-        private int dstPort_ = 0;
+        private int dstPort_;
 
         /**
          * <code>uint32 dst_port = 6;</code>
@@ -624,7 +702,7 @@ public final class Acl {
 
         public static final int START_MPLS_LABEL_FIELD_NUMBER = 7;
 
-        private int startMplsLabel_ = 0;
+        private int startMplsLabel_;
 
         /**
          * <code>uint32 start_mpls_label = 7;</code>
@@ -637,7 +715,7 @@ public final class Acl {
 
         public static final int END_MPLS_LABEL_FIELD_NUMBER = 8;
 
-        private int endMplsLabel_ = 0;
+        private int endMplsLabel_;
 
         /**
          * <code>uint32 end_mpls_label = 8;</code>
@@ -669,10 +747,10 @@ public final class Acl {
             if (protocol_ != 0) {
                 output.writeUInt32(2, protocol_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcAddress_)) {
+            if (!getSrcAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, srcAddress_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstAddress_)) {
+            if (!getDstAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 4, dstAddress_);
             }
             if (srcPort_ != 0) {
@@ -687,7 +765,7 @@ public final class Acl {
             if (endMplsLabel_ != 0) {
                 output.writeUInt32(8, endMplsLabel_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -702,10 +780,10 @@ public final class Acl {
             if (protocol_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, protocol_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcAddress_)) {
+            if (!getSrcAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, srcAddress_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstAddress_)) {
+            if (!getDstAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, dstAddress_);
             }
             if (srcPort_ != 0) {
@@ -720,7 +798,7 @@ public final class Acl {
             if (endMplsLabel_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(8, endMplsLabel_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -750,7 +828,7 @@ public final class Acl {
                 return false;
             if (getEndMplsLabel() != other.getEndMplsLabel())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -778,7 +856,7 @@ public final class Acl {
             hash = (53 * hash) + getStartMplsLabel();
             hash = (37 * hash) + END_MPLS_LABEL_FIELD_NUMBER;
             hash = (53 * hash) + getEndMplsLabel();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -872,16 +950,22 @@ public final class Acl {
 
             // Construct using acl.Acl.AclMatch.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 dscp_ = 0;
                 protocol_ = 0;
                 srcAddress_ = "";
@@ -915,39 +999,46 @@ public final class Acl {
             @java.lang.Override
             public acl.Acl.AclMatch buildPartial() {
                 acl.Acl.AclMatch result = new acl.Acl.AclMatch(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.dscp_ = dscp_;
+                result.protocol_ = protocol_;
+                result.srcAddress_ = srcAddress_;
+                result.dstAddress_ = dstAddress_;
+                result.srcPort_ = srcPort_;
+                result.dstPort_ = dstPort_;
+                result.startMplsLabel_ = startMplsLabel_;
+                result.endMplsLabel_ = endMplsLabel_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(acl.Acl.AclMatch result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.dscp_ = dscp_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.protocol_ = protocol_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.srcAddress_ = srcAddress_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.dstAddress_ = dstAddress_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.srcPort_ = srcPort_;
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.dstPort_ = dstPort_;
-                }
-                if (((from_bitField0_ & 0x00000040) != 0)) {
-                    result.startMplsLabel_ = startMplsLabel_;
-                }
-                if (((from_bitField0_ & 0x00000080) != 0)) {
-                    result.endMplsLabel_ = endMplsLabel_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -971,12 +1062,10 @@ public final class Acl {
                 }
                 if (!other.getSrcAddress().isEmpty()) {
                     srcAddress_ = other.srcAddress_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (!other.getDstAddress().isEmpty()) {
                     dstAddress_ = other.dstAddress_;
-                    bitField0_ |= 0x00000008;
                     onChanged();
                 }
                 if (other.getSrcPort() != 0) {
@@ -991,7 +1080,7 @@ public final class Acl {
                 if (other.getEndMplsLabel() != 0) {
                     setEndMplsLabel(other.getEndMplsLabel());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -1003,96 +1092,20 @@ public final class Acl {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                acl.Acl.AclMatch parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    dscp_ = input.readUInt32();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 16:
-                                {
-                                    protocol_ = input.readUInt32();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 26:
-                                {
-                                    srcAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    dstAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            case 40:
-                                {
-                                    srcPort_ = input.readUInt32();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 40
-                            case 48:
-                                {
-                                    dstPort_ = input.readUInt32();
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 48
-                            case 56:
-                                {
-                                    startMplsLabel_ = input.readUInt32();
-                                    bitField0_ |= 0x00000040;
-                                    break;
-                                }
-                            // case 56
-                            case 64:
-                                {
-                                    endMplsLabel_ = input.readUInt32();
-                                    bitField0_ |= 0x00000080;
-                                    break;
-                                }
-                            // case 64
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (acl.Acl.AclMatch) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int dscp_;
 
             /**
@@ -1111,7 +1124,6 @@ public final class Acl {
              */
             public Builder setDscp(int value) {
                 dscp_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -1121,7 +1133,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearDscp() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 dscp_ = 0;
                 onChanged();
                 return this;
@@ -1145,7 +1156,6 @@ public final class Acl {
              */
             public Builder setProtocol(int value) {
                 protocol_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1155,7 +1165,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearProtocol() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 protocol_ = 0;
                 onChanged();
                 return this;
@@ -1204,7 +1213,6 @@ public final class Acl {
                     throw new NullPointerException();
                 }
                 srcAddress_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -1215,7 +1223,6 @@ public final class Acl {
              */
             public Builder clearSrcAddress() {
                 srcAddress_ = getDefaultInstance().getSrcAddress();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -1231,7 +1238,6 @@ public final class Acl {
                 }
                 checkByteStringIsUtf8(value);
                 srcAddress_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -1279,7 +1285,6 @@ public final class Acl {
                     throw new NullPointerException();
                 }
                 dstAddress_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -1290,7 +1295,6 @@ public final class Acl {
              */
             public Builder clearDstAddress() {
                 dstAddress_ = getDefaultInstance().getDstAddress();
-                bitField0_ = (bitField0_ & ~0x00000008);
                 onChanged();
                 return this;
             }
@@ -1306,7 +1310,6 @@ public final class Acl {
                 }
                 checkByteStringIsUtf8(value);
                 dstAddress_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -1329,7 +1332,6 @@ public final class Acl {
              */
             public Builder setSrcPort(int value) {
                 srcPort_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -1339,7 +1341,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearSrcPort() {
-                bitField0_ = (bitField0_ & ~0x00000010);
                 srcPort_ = 0;
                 onChanged();
                 return this;
@@ -1363,7 +1364,6 @@ public final class Acl {
              */
             public Builder setDstPort(int value) {
                 dstPort_ = value;
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return this;
             }
@@ -1373,7 +1373,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearDstPort() {
-                bitField0_ = (bitField0_ & ~0x00000020);
                 dstPort_ = 0;
                 onChanged();
                 return this;
@@ -1397,7 +1396,6 @@ public final class Acl {
              */
             public Builder setStartMplsLabel(int value) {
                 startMplsLabel_ = value;
-                bitField0_ |= 0x00000040;
                 onChanged();
                 return this;
             }
@@ -1407,7 +1405,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearStartMplsLabel() {
-                bitField0_ = (bitField0_ & ~0x00000040);
                 startMplsLabel_ = 0;
                 onChanged();
                 return this;
@@ -1431,7 +1428,6 @@ public final class Acl {
              */
             public Builder setEndMplsLabel(int value) {
                 endMplsLabel_ = value;
-                bitField0_ |= 0x00000080;
                 onChanged();
                 return this;
             }
@@ -1441,7 +1437,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearEndMplsLabel() {
-                bitField0_ = (bitField0_ & ~0x00000080);
                 endMplsLabel_ = 0;
                 onChanged();
                 return this;
@@ -1474,17 +1469,7 @@ public final class Acl {
 
             @java.lang.Override
             public AclMatch parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AclMatch(input, extensionRegistry);
             }
         };
 
@@ -1555,6 +1540,56 @@ public final class Acl {
             return new AclAction();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AclAction(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                forwardAction_ = rawValue;
+                                break;
+                            }
+                        case 16:
+                            {
+                                int rawValue = input.readEnum();
+                                logAction_ = rawValue;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return acl.Acl.internal_static_acl_AclAction_descriptor;
         }
@@ -1566,7 +1601,7 @@ public final class Acl {
 
         public static final int FORWARD_ACTION_FIELD_NUMBER = 1;
 
-        private int forwardAction_ = 0;
+        private int forwardAction_;
 
         /**
          * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
@@ -1583,13 +1618,14 @@ public final class Acl {
          */
         @java.lang.Override
         public acl.Acl.AclForwardActionEnum getForwardAction() {
-            acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.forNumber(forwardAction_);
+            @SuppressWarnings("deprecation")
+            acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.valueOf(forwardAction_);
             return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result;
         }
 
         public static final int LOG_ACTION_FIELD_NUMBER = 2;
 
-        private int logAction_ = 0;
+        private int logAction_;
 
         /**
          * <code>.acl.AclLogActionEnum log_action = 2;</code>
@@ -1606,7 +1642,8 @@ public final class Acl {
          */
         @java.lang.Override
         public acl.Acl.AclLogActionEnum getLogAction() {
-            acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.forNumber(logAction_);
+            @SuppressWarnings("deprecation")
+            acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.valueOf(logAction_);
             return result == null ? acl.Acl.AclLogActionEnum.UNRECOGNIZED : result;
         }
 
@@ -1631,7 +1668,7 @@ public final class Acl {
             if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) {
                 output.writeEnum(2, logAction_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -1646,7 +1683,7 @@ public final class Acl {
             if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, logAction_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1664,7 +1701,7 @@ public final class Acl {
                 return false;
             if (logAction_ != other.logAction_)
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -1680,7 +1717,7 @@ public final class Acl {
             hash = (53 * hash) + forwardAction_;
             hash = (37 * hash) + LOG_ACTION_FIELD_NUMBER;
             hash = (53 * hash) + logAction_;
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -1774,16 +1811,22 @@ public final class Acl {
 
             // Construct using acl.Acl.AclAction.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 forwardAction_ = 0;
                 logAction_ = 0;
                 return this;
@@ -1811,21 +1854,40 @@ public final class Acl {
             @java.lang.Override
             public acl.Acl.AclAction buildPartial() {
                 acl.Acl.AclAction result = new acl.Acl.AclAction(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.forwardAction_ = forwardAction_;
+                result.logAction_ = logAction_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(acl.Acl.AclAction result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.forwardAction_ = forwardAction_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.logAction_ = logAction_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -1847,7 +1909,7 @@ public final class Acl {
                 if (other.logAction_ != 0) {
                     setLogActionValue(other.getLogActionValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -1859,54 +1921,20 @@ public final class Acl {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                acl.Acl.AclAction parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    forwardAction_ = input.readEnum();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 16:
-                                {
-                                    logAction_ = input.readEnum();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (acl.Acl.AclAction) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int forwardAction_ = 0;
 
             /**
@@ -1925,7 +1953,6 @@ public final class Acl {
              */
             public Builder setForwardActionValue(int value) {
                 forwardAction_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -1936,7 +1963,8 @@ public final class Acl {
              */
             @java.lang.Override
             public acl.Acl.AclForwardActionEnum getForwardAction() {
-                acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.forNumber(forwardAction_);
+                @SuppressWarnings("deprecation")
+                acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.valueOf(forwardAction_);
                 return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result;
             }
 
@@ -1949,7 +1977,6 @@ public final class Acl {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000001;
                 forwardAction_ = value.getNumber();
                 onChanged();
                 return this;
@@ -1960,7 +1987,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearForwardAction() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 forwardAction_ = 0;
                 onChanged();
                 return this;
@@ -1984,7 +2010,6 @@ public final class Acl {
              */
             public Builder setLogActionValue(int value) {
                 logAction_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1995,7 +2020,8 @@ public final class Acl {
              */
             @java.lang.Override
             public acl.Acl.AclLogActionEnum getLogAction() {
-                acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.forNumber(logAction_);
+                @SuppressWarnings("deprecation")
+                acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.valueOf(logAction_);
                 return result == null ? acl.Acl.AclLogActionEnum.UNRECOGNIZED : result;
             }
 
@@ -2008,7 +2034,6 @@ public final class Acl {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000002;
                 logAction_ = value.getNumber();
                 onChanged();
                 return this;
@@ -2019,7 +2044,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearLogAction() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 logAction_ = 0;
                 onChanged();
                 return this;
@@ -2052,17 +2076,7 @@ public final class Acl {
 
             @java.lang.Override
             public AclAction parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AclAction(input, extensionRegistry);
             }
         };
 
@@ -2160,6 +2174,81 @@ public final class Acl {
             return new AclEntry();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AclEntry(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                sequenceId_ = input.readUInt32();
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                description_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                acl.Acl.AclMatch.Builder subBuilder = null;
+                                if (match_ != null) {
+                                    subBuilder = match_.toBuilder();
+                                }
+                                match_ = input.readMessage(acl.Acl.AclMatch.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(match_);
+                                    match_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 34:
+                            {
+                                acl.Acl.AclAction.Builder subBuilder = null;
+                                if (action_ != null) {
+                                    subBuilder = action_.toBuilder();
+                                }
+                                action_ = input.readMessage(acl.Acl.AclAction.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(action_);
+                                    action_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return acl.Acl.internal_static_acl_AclEntry_descriptor;
         }
@@ -2171,7 +2260,7 @@ public final class Acl {
 
         public static final int SEQUENCE_ID_FIELD_NUMBER = 1;
 
-        private int sequenceId_ = 0;
+        private int sequenceId_;
 
         /**
          * <code>uint32 sequence_id = 1;</code>
@@ -2184,8 +2273,7 @@ public final class Acl {
 
         public static final int DESCRIPTION_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object description_ = "";
+        private volatile java.lang.Object description_;
 
         /**
          * <code>string description = 2;</code>
@@ -2247,7 +2335,7 @@ public final class Acl {
          */
         @java.lang.Override
         public acl.Acl.AclMatchOrBuilder getMatchOrBuilder() {
-            return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_;
+            return getMatch();
         }
 
         public static final int ACTION_FIELD_NUMBER = 4;
@@ -2277,7 +2365,7 @@ public final class Acl {
          */
         @java.lang.Override
         public acl.Acl.AclActionOrBuilder getActionOrBuilder() {
-            return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_;
+            return getAction();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -2298,7 +2386,7 @@ public final class Acl {
             if (sequenceId_ != 0) {
                 output.writeUInt32(1, sequenceId_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
+            if (!getDescriptionBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_);
             }
             if (match_ != null) {
@@ -2307,7 +2395,7 @@ public final class Acl {
             if (action_ != null) {
                 output.writeMessage(4, getAction());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -2319,7 +2407,7 @@ public final class Acl {
             if (sequenceId_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(1, sequenceId_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
+            if (!getDescriptionBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_);
             }
             if (match_ != null) {
@@ -2328,7 +2416,7 @@ public final class Acl {
             if (action_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getAction());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -2358,7 +2446,7 @@ public final class Acl {
                 if (!getAction().equals(other.getAction()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -2382,7 +2470,7 @@ public final class Acl {
                 hash = (37 * hash) + ACTION_FIELD_NUMBER;
                 hash = (53 * hash) + getAction().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2476,26 +2564,34 @@ public final class Acl {
 
             // Construct using acl.Acl.AclEntry.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 sequenceId_ = 0;
                 description_ = "";
-                match_ = null;
-                if (matchBuilder_ != null) {
-                    matchBuilder_.dispose();
+                if (matchBuilder_ == null) {
+                    match_ = null;
+                } else {
+                    match_ = null;
                     matchBuilder_ = null;
                 }
-                action_ = null;
-                if (actionBuilder_ != null) {
-                    actionBuilder_.dispose();
+                if (actionBuilder_ == null) {
+                    action_ = null;
+                } else {
+                    action_ = null;
                     actionBuilder_ = null;
                 }
                 return this;
@@ -2523,27 +2619,50 @@ public final class Acl {
             @java.lang.Override
             public acl.Acl.AclEntry buildPartial() {
                 acl.Acl.AclEntry result = new acl.Acl.AclEntry(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                result.sequenceId_ = sequenceId_;
+                result.description_ = description_;
+                if (matchBuilder_ == null) {
+                    result.match_ = match_;
+                } else {
+                    result.match_ = matchBuilder_.build();
+                }
+                if (actionBuilder_ == null) {
+                    result.action_ = action_;
+                } else {
+                    result.action_ = actionBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(acl.Acl.AclEntry result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.sequenceId_ = sequenceId_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.description_ = description_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.match_ = matchBuilder_ == null ? match_ : matchBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.action_ = actionBuilder_ == null ? action_ : actionBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -2564,7 +2683,6 @@ public final class Acl {
                 }
                 if (!other.getDescription().isEmpty()) {
                     description_ = other.description_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.hasMatch()) {
@@ -2573,7 +2691,7 @@ public final class Acl {
                 if (other.hasAction()) {
                     mergeAction(other.getAction());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -2585,68 +2703,20 @@ public final class Acl {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                acl.Acl.AclEntry parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    sequenceId_ = input.readUInt32();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 18:
-                                {
-                                    description_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getMatchFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    input.readMessage(getActionFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (acl.Acl.AclEntry) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int sequenceId_;
 
             /**
@@ -2665,7 +2735,6 @@ public final class Acl {
              */
             public Builder setSequenceId(int value) {
                 sequenceId_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -2675,7 +2744,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearSequenceId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 sequenceId_ = 0;
                 onChanged();
                 return this;
@@ -2724,7 +2792,6 @@ public final class Acl {
                     throw new NullPointerException();
                 }
                 description_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -2735,7 +2802,6 @@ public final class Acl {
              */
             public Builder clearDescription() {
                 description_ = getDefaultInstance().getDescription();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -2751,7 +2817,6 @@ public final class Acl {
                 }
                 checkByteStringIsUtf8(value);
                 description_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -2765,7 +2830,7 @@ public final class Acl {
              * @return Whether the match field is set.
              */
             public boolean hasMatch() {
-                return ((bitField0_ & 0x00000004) != 0);
+                return matchBuilder_ != null || match_ != null;
             }
 
             /**
@@ -2789,11 +2854,10 @@ public final class Acl {
                         throw new NullPointerException();
                     }
                     match_ = value;
+                    onChanged();
                 } else {
                     matchBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -2803,11 +2867,10 @@ public final class Acl {
             public Builder setMatch(acl.Acl.AclMatch.Builder builderForValue) {
                 if (matchBuilder_ == null) {
                     match_ = builderForValue.build();
+                    onChanged();
                 } else {
                     matchBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -2816,16 +2879,15 @@ public final class Acl {
              */
             public Builder mergeMatch(acl.Acl.AclMatch value) {
                 if (matchBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0) && match_ != null && match_ != acl.Acl.AclMatch.getDefaultInstance()) {
-                        getMatchBuilder().mergeFrom(value);
+                    if (match_ != null) {
+                        match_ = acl.Acl.AclMatch.newBuilder(match_).mergeFrom(value).buildPartial();
                     } else {
                         match_ = value;
                     }
+                    onChanged();
                 } else {
                     matchBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -2833,13 +2895,13 @@ public final class Acl {
              * <code>.acl.AclMatch match = 3;</code>
              */
             public Builder clearMatch() {
-                bitField0_ = (bitField0_ & ~0x00000004);
-                match_ = null;
-                if (matchBuilder_ != null) {
-                    matchBuilder_.dispose();
+                if (matchBuilder_ == null) {
+                    match_ = null;
+                    onChanged();
+                } else {
+                    match_ = null;
                     matchBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2847,7 +2909,6 @@ public final class Acl {
              * <code>.acl.AclMatch match = 3;</code>
              */
             public acl.Acl.AclMatch.Builder getMatchBuilder() {
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return getMatchFieldBuilder().getBuilder();
             }
@@ -2883,7 +2944,7 @@ public final class Acl {
              * @return Whether the action field is set.
              */
             public boolean hasAction() {
-                return ((bitField0_ & 0x00000008) != 0);
+                return actionBuilder_ != null || action_ != null;
             }
 
             /**
@@ -2907,11 +2968,10 @@ public final class Acl {
                         throw new NullPointerException();
                     }
                     action_ = value;
+                    onChanged();
                 } else {
                     actionBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -2921,11 +2981,10 @@ public final class Acl {
             public Builder setAction(acl.Acl.AclAction.Builder builderForValue) {
                 if (actionBuilder_ == null) {
                     action_ = builderForValue.build();
+                    onChanged();
                 } else {
                     actionBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -2934,16 +2993,15 @@ public final class Acl {
              */
             public Builder mergeAction(acl.Acl.AclAction value) {
                 if (actionBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0) && action_ != null && action_ != acl.Acl.AclAction.getDefaultInstance()) {
-                        getActionBuilder().mergeFrom(value);
+                    if (action_ != null) {
+                        action_ = acl.Acl.AclAction.newBuilder(action_).mergeFrom(value).buildPartial();
                     } else {
                         action_ = value;
                     }
+                    onChanged();
                 } else {
                     actionBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -2951,13 +3009,13 @@ public final class Acl {
              * <code>.acl.AclAction action = 4;</code>
              */
             public Builder clearAction() {
-                bitField0_ = (bitField0_ & ~0x00000008);
-                action_ = null;
-                if (actionBuilder_ != null) {
-                    actionBuilder_.dispose();
+                if (actionBuilder_ == null) {
+                    action_ = null;
+                    onChanged();
+                } else {
+                    action_ = null;
                     actionBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2965,7 +3023,6 @@ public final class Acl {
              * <code>.acl.AclAction action = 4;</code>
              */
             public acl.Acl.AclAction.Builder getActionBuilder() {
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return getActionFieldBuilder().getBuilder();
             }
@@ -3019,17 +3076,7 @@ public final class Acl {
 
             @java.lang.Override
             public AclEntry parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AclEntry(input, extensionRegistry);
             }
         };
 
@@ -3152,6 +3199,81 @@ public final class Acl {
             return new AclRuleSet();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AclRuleSet(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 16:
+                            {
+                                int rawValue = input.readEnum();
+                                type_ = rawValue;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                description_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                userId_ = s;
+                                break;
+                            }
+                        case 42:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    entries_ = new java.util.ArrayList<acl.Acl.AclEntry>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                entries_.add(input.readMessage(acl.Acl.AclEntry.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    entries_ = java.util.Collections.unmodifiableList(entries_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return acl.Acl.internal_static_acl_AclRuleSet_descriptor;
         }
@@ -3163,8 +3285,7 @@ public final class Acl {
 
         public static final int NAME_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 1;</code>
@@ -3201,7 +3322,7 @@ public final class Acl {
 
         public static final int TYPE_FIELD_NUMBER = 2;
 
-        private int type_ = 0;
+        private int type_;
 
         /**
          * <code>.acl.AclRuleTypeEnum type = 2;</code>
@@ -3218,14 +3339,14 @@ public final class Acl {
          */
         @java.lang.Override
         public acl.Acl.AclRuleTypeEnum getType() {
-            acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.forNumber(type_);
+            @SuppressWarnings("deprecation")
+            acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.valueOf(type_);
             return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result;
         }
 
         public static final int DESCRIPTION_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object description_ = "";
+        private volatile java.lang.Object description_;
 
         /**
          * <code>string description = 3;</code>
@@ -3262,8 +3383,7 @@ public final class Acl {
 
         public static final int USER_ID_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object userId_ = "";
+        private volatile java.lang.Object userId_;
 
         /**
          * <code>string user_id = 4;</code>
@@ -3300,7 +3420,6 @@ public final class Acl {
 
         public static final int ENTRIES_FIELD_NUMBER = 5;
 
-        @SuppressWarnings("serial")
         private java.util.List<acl.Acl.AclEntry> entries_;
 
         /**
@@ -3358,22 +3477,22 @@ public final class Acl {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
             }
             if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) {
                 output.writeEnum(2, type_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
+            if (!getDescriptionBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, description_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) {
+            if (!getUserIdBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 4, userId_);
             }
             for (int i = 0; i < entries_.size(); i++) {
                 output.writeMessage(5, entries_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -3382,22 +3501,22 @@ public final class Acl {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
             }
             if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, type_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
+            if (!getDescriptionBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, description_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) {
+            if (!getUserIdBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, userId_);
             }
             for (int i = 0; i < entries_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, entries_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -3421,7 +3540,7 @@ public final class Acl {
                 return false;
             if (!getEntriesList().equals(other.getEntriesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -3445,7 +3564,7 @@ public final class Acl {
                 hash = (37 * hash) + ENTRIES_FIELD_NUMBER;
                 hash = (53 * hash) + getEntriesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -3539,27 +3658,33 @@ public final class Acl {
 
             // Construct using acl.Acl.AclRuleSet.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getEntriesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 name_ = "";
                 type_ = 0;
                 description_ = "";
                 userId_ = "";
                 if (entriesBuilder_ == null) {
                     entries_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    entries_ = null;
                     entriesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000010);
                 return this;
             }
 
@@ -3585,40 +3710,52 @@ public final class Acl {
             @java.lang.Override
             public acl.Acl.AclRuleSet buildPartial() {
                 acl.Acl.AclRuleSet result = new acl.Acl.AclRuleSet(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(acl.Acl.AclRuleSet result) {
+                int from_bitField0_ = bitField0_;
+                result.name_ = name_;
+                result.type_ = type_;
+                result.description_ = description_;
+                result.userId_ = userId_;
                 if (entriesBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         entries_ = java.util.Collections.unmodifiableList(entries_);
-                        bitField0_ = (bitField0_ & ~0x00000010);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.entries_ = entries_;
                 } else {
                     result.entries_ = entriesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(acl.Acl.AclRuleSet result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.type_ = type_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.description_ = description_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.userId_ = userId_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -3636,7 +3773,6 @@ public final class Acl {
                     return this;
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (other.type_ != 0) {
@@ -3644,19 +3780,17 @@ public final class Acl {
                 }
                 if (!other.getDescription().isEmpty()) {
                     description_ = other.description_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (!other.getUserId().isEmpty()) {
                     userId_ = other.userId_;
-                    bitField0_ |= 0x00000008;
                     onChanged();
                 }
                 if (entriesBuilder_ == null) {
                     if (!other.entries_.isEmpty()) {
                         if (entries_.isEmpty()) {
                             entries_ = other.entries_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureEntriesIsMutable();
                             entries_.addAll(other.entries_);
@@ -3669,14 +3803,14 @@ public final class Acl {
                             entriesBuilder_.dispose();
                             entriesBuilder_ = null;
                             entries_ = other.entries_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             entriesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEntriesFieldBuilder() : null;
                         } else {
                             entriesBuilder_.addAllMessages(other.entries_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -3688,75 +3822,17 @@ public final class Acl {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                acl.Acl.AclRuleSet parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    type_ = input.readEnum();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 26:
-                                {
-                                    description_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    userId_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    acl.Acl.AclEntry m = input.readMessage(acl.Acl.AclEntry.parser(), extensionRegistry);
-                                    if (entriesBuilder_ == null) {
-                                        ensureEntriesIsMutable();
-                                        entries_.add(m);
-                                    } else {
-                                        entriesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 42
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (acl.Acl.AclRuleSet) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -3805,7 +3881,6 @@ public final class Acl {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -3816,7 +3891,6 @@ public final class Acl {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -3832,7 +3906,6 @@ public final class Acl {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -3855,7 +3928,6 @@ public final class Acl {
              */
             public Builder setTypeValue(int value) {
                 type_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -3866,7 +3938,8 @@ public final class Acl {
              */
             @java.lang.Override
             public acl.Acl.AclRuleTypeEnum getType() {
-                acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.forNumber(type_);
+                @SuppressWarnings("deprecation")
+                acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.valueOf(type_);
                 return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result;
             }
 
@@ -3879,7 +3952,6 @@ public final class Acl {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000002;
                 type_ = value.getNumber();
                 onChanged();
                 return this;
@@ -3890,7 +3962,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearType() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 type_ = 0;
                 onChanged();
                 return this;
@@ -3939,7 +4010,6 @@ public final class Acl {
                     throw new NullPointerException();
                 }
                 description_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -3950,7 +4020,6 @@ public final class Acl {
              */
             public Builder clearDescription() {
                 description_ = getDefaultInstance().getDescription();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -3966,7 +4035,6 @@ public final class Acl {
                 }
                 checkByteStringIsUtf8(value);
                 description_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -4014,7 +4082,6 @@ public final class Acl {
                     throw new NullPointerException();
                 }
                 userId_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -4025,7 +4092,6 @@ public final class Acl {
              */
             public Builder clearUserId() {
                 userId_ = getDefaultInstance().getUserId();
-                bitField0_ = (bitField0_ & ~0x00000008);
                 onChanged();
                 return this;
             }
@@ -4041,7 +4107,6 @@ public final class Acl {
                 }
                 checkByteStringIsUtf8(value);
                 userId_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -4049,9 +4114,9 @@ public final class Acl {
             private java.util.List<acl.Acl.AclEntry> entries_ = java.util.Collections.emptyList();
 
             private void ensureEntriesIsMutable() {
-                if (!((bitField0_ & 0x00000010) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     entries_ = new java.util.ArrayList<acl.Acl.AclEntry>(entries_);
-                    bitField0_ |= 0x00000010;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -4203,7 +4268,7 @@ public final class Acl {
             public Builder clearEntries() {
                 if (entriesBuilder_ == null) {
                     entries_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000010);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     entriesBuilder_.clear();
@@ -4277,7 +4342,7 @@ public final class Acl {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder> getEntriesFieldBuilder() {
                 if (entriesBuilder_ == null) {
-                    entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder>(entries_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
+                    entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder>(entries_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     entries_ = null;
                 }
                 return entriesBuilder_;
@@ -4310,17 +4375,7 @@ public final class Acl {
 
             @java.lang.Override
             public AclRuleSet parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AclRuleSet(input, extensionRegistry);
             }
         };
 
diff --git a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java
index 22679d79248b2374c8f96e7f5286ac81e37c8517..4593770498216267b8d2f95dd728fccfbb9dc134 100644
--- a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java
+++ b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java
@@ -184,13 +184,17 @@ public final class ContextOuterClass {
          */
         DEVICEDRIVER_GNMI_OPENCONFIG(8),
         /**
-         * <code>DEVICEDRIVER_FLEXSCALE = 9;</code>
+         * <code>DEVICEDRIVER_OPTICAL_TFS = 9;</code>
          */
-        DEVICEDRIVER_FLEXSCALE(9),
+        DEVICEDRIVER_OPTICAL_TFS(9),
         /**
          * <code>DEVICEDRIVER_IETF_ACTN = 10;</code>
          */
         DEVICEDRIVER_IETF_ACTN(10),
+        /**
+         * <code>DEVICEDRIVER_OC = 11;</code>
+         */
+        DEVICEDRIVER_OC(11),
         UNRECOGNIZED(-1);
 
         /**
@@ -243,15 +247,20 @@ public final class ContextOuterClass {
         public static final int DEVICEDRIVER_GNMI_OPENCONFIG_VALUE = 8;
 
         /**
-         * <code>DEVICEDRIVER_FLEXSCALE = 9;</code>
+         * <code>DEVICEDRIVER_OPTICAL_TFS = 9;</code>
          */
-        public static final int DEVICEDRIVER_FLEXSCALE_VALUE = 9;
+        public static final int DEVICEDRIVER_OPTICAL_TFS_VALUE = 9;
 
         /**
          * <code>DEVICEDRIVER_IETF_ACTN = 10;</code>
          */
         public static final int DEVICEDRIVER_IETF_ACTN_VALUE = 10;
 
+        /**
+         * <code>DEVICEDRIVER_OC = 11;</code>
+         */
+        public static final int DEVICEDRIVER_OC_VALUE = 11;
+
         public final int getNumber() {
             if (this == UNRECOGNIZED) {
                 throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
@@ -294,9 +303,11 @@ public final class ContextOuterClass {
                 case 8:
                     return DEVICEDRIVER_GNMI_OPENCONFIG;
                 case 9:
-                    return DEVICEDRIVER_FLEXSCALE;
+                    return DEVICEDRIVER_OPTICAL_TFS;
                 case 10:
                     return DEVICEDRIVER_IETF_ACTN;
+                case 11:
+                    return DEVICEDRIVER_OC;
                 default:
                     return null;
             }
@@ -489,6 +500,10 @@ public final class ContextOuterClass {
          * <code>SERVICETYPE_E2E = 5;</code>
          */
         SERVICETYPE_E2E(5),
+        /**
+         * <code>SERVICETYPE_OPTICAL_CONNECTIVITY = 6;</code>
+         */
+        SERVICETYPE_OPTICAL_CONNECTIVITY(6),
         UNRECOGNIZED(-1);
 
         /**
@@ -521,6 +536,11 @@ public final class ContextOuterClass {
          */
         public static final int SERVICETYPE_E2E_VALUE = 5;
 
+        /**
+         * <code>SERVICETYPE_OPTICAL_CONNECTIVITY = 6;</code>
+         */
+        public static final int SERVICETYPE_OPTICAL_CONNECTIVITY_VALUE = 6;
+
         public final int getNumber() {
             if (this == UNRECOGNIZED) {
                 throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
@@ -556,6 +576,8 @@ public final class ContextOuterClass {
                     return SERVICETYPE_TE;
                 case 5:
                     return SERVICETYPE_E2E;
+                case 6:
+                    return SERVICETYPE_OPTICAL_CONNECTIVITY;
                 default:
                     return null;
             }
@@ -1341,6 +1363,44 @@ public final class ContextOuterClass {
             return new Empty();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Empty(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Empty_descriptor;
         }
@@ -1365,7 +1425,7 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -1374,7 +1434,7 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1388,7 +1448,7 @@ public final class ContextOuterClass {
                 return super.equals(obj);
             }
             context.ContextOuterClass.Empty other = (context.ContextOuterClass.Empty) obj;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -1400,7 +1460,7 @@ public final class ContextOuterClass {
             }
             int hash = 41;
             hash = (19 * hash) + getDescriptor().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -1498,10 +1558,17 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Empty.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
@@ -1536,6 +1603,36 @@ public final class ContextOuterClass {
                 return result;
             }
 
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.Message other) {
                 if (other instanceof context.ContextOuterClass.Empty) {
@@ -1549,7 +1646,7 @@ public final class ContextOuterClass {
             public Builder mergeFrom(context.ContextOuterClass.Empty other) {
                 if (other == context.ContextOuterClass.Empty.getDefaultInstance())
                     return this;
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -1561,35 +1658,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Empty parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Empty) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -1620,17 +1699,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Empty parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Empty(input, extensionRegistry);
             }
         };
 
@@ -1688,6 +1757,50 @@ public final class ContextOuterClass {
             return new Uuid();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Uuid(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                uuid_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Uuid_descriptor;
         }
@@ -1699,8 +1812,7 @@ public final class ContextOuterClass {
 
         public static final int UUID_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object uuid_ = "";
+        private volatile java.lang.Object uuid_;
 
         /**
          * <code>string uuid = 1;</code>
@@ -1750,10 +1862,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) {
+            if (!getUuidBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, uuid_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -1762,10 +1874,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) {
+            if (!getUuidBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, uuid_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1781,7 +1893,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Uuid other = (context.ContextOuterClass.Uuid) obj;
             if (!getUuid().equals(other.getUuid()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -1795,7 +1907,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + UUID_FIELD_NUMBER;
             hash = (53 * hash) + getUuid().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -1889,16 +2001,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Uuid.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 uuid_ = "";
                 return this;
             }
@@ -1925,18 +2043,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Uuid buildPartial() {
                 context.ContextOuterClass.Uuid result = new context.ContextOuterClass.Uuid(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.uuid_ = uuid_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Uuid result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.uuid_ = uuid_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -1954,10 +2093,9 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getUuid().isEmpty()) {
                     uuid_ = other.uuid_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -1969,47 +2107,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Uuid parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    uuid_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Uuid) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private java.lang.Object uuid_ = "";
 
             /**
@@ -2053,7 +2164,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 uuid_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -2064,7 +2174,6 @@ public final class ContextOuterClass {
              */
             public Builder clearUuid() {
                 uuid_ = getDefaultInstance().getUuid();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -2080,7 +2189,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 uuid_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -2112,17 +2220,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Uuid parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Uuid(input, extensionRegistry);
             }
         };
 
@@ -2173,6 +2271,49 @@ public final class ContextOuterClass {
             return new Timestamp();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Timestamp(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 9:
+                            {
+                                timestamp_ = input.readDouble();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
         }
@@ -2184,7 +2325,7 @@ public final class ContextOuterClass {
 
         public static final int TIMESTAMP_FIELD_NUMBER = 1;
 
-        private double timestamp_ = 0D;
+        private double timestamp_;
 
         /**
          * <code>double timestamp = 1;</code>
@@ -2210,10 +2351,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (java.lang.Double.doubleToRawLongBits(timestamp_) != 0) {
+            if (timestamp_ != 0D) {
                 output.writeDouble(1, timestamp_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -2222,10 +2363,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (java.lang.Double.doubleToRawLongBits(timestamp_) != 0) {
+            if (timestamp_ != 0D) {
                 size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, timestamp_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -2241,7 +2382,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Timestamp other = (context.ContextOuterClass.Timestamp) obj;
             if (java.lang.Double.doubleToLongBits(getTimestamp()) != java.lang.Double.doubleToLongBits(other.getTimestamp()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -2255,7 +2396,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashLong(java.lang.Double.doubleToLongBits(getTimestamp()));
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2349,16 +2490,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Timestamp.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 timestamp_ = 0D;
                 return this;
             }
@@ -2385,18 +2532,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Timestamp buildPartial() {
                 context.ContextOuterClass.Timestamp result = new context.ContextOuterClass.Timestamp(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.timestamp_ = timestamp_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Timestamp result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.timestamp_ = timestamp_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -2415,7 +2583,7 @@ public final class ContextOuterClass {
                 if (other.getTimestamp() != 0D) {
                     setTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -2427,47 +2595,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Timestamp parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 9:
-                                {
-                                    timestamp_ = input.readDouble();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 9
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Timestamp) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private double timestamp_;
 
             /**
@@ -2486,7 +2627,6 @@ public final class ContextOuterClass {
              */
             public Builder setTimestamp(double value) {
                 timestamp_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -2496,7 +2636,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 timestamp_ = 0D;
                 onChanged();
                 return this;
@@ -2529,17 +2668,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Timestamp parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Timestamp(input, extensionRegistry);
             }
         };
 
@@ -2614,6 +2743,63 @@ public final class ContextOuterClass {
             return new Event();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Event(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (timestamp_ != null) {
+                                    subBuilder = timestamp_.toBuilder();
+                                }
+                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(timestamp_);
+                                    timestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                int rawValue = input.readEnum();
+                                eventType_ = rawValue;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Event_descriptor;
         }
@@ -2650,12 +2836,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+            return getTimestamp();
         }
 
         public static final int EVENT_TYPE_FIELD_NUMBER = 2;
 
-        private int eventType_ = 0;
+        private int eventType_;
 
         /**
          * <code>.context.EventTypeEnum event_type = 2;</code>
@@ -2672,7 +2858,8 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventTypeEnum getEventType() {
-            context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.forNumber(eventType_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.valueOf(eventType_);
             return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result;
         }
 
@@ -2697,7 +2884,7 @@ public final class ContextOuterClass {
             if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) {
                 output.writeEnum(2, eventType_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -2712,7 +2899,7 @@ public final class ContextOuterClass {
             if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, eventType_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -2734,7 +2921,7 @@ public final class ContextOuterClass {
             }
             if (eventType_ != other.eventType_)
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -2752,7 +2939,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + EVENT_TYPE_FIELD_NUMBER;
             hash = (53 * hash) + eventType_;
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2846,19 +3033,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Event.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
                 eventType_ = 0;
@@ -2887,21 +3081,44 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Event buildPartial() {
                 context.ContextOuterClass.Event result = new context.ContextOuterClass.Event(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (timestampBuilder_ == null) {
+                    result.timestamp_ = timestamp_;
+                } else {
+                    result.timestamp_ = timestampBuilder_.build();
                 }
+                result.eventType_ = eventType_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Event result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.eventType_ = eventType_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -2923,7 +3140,7 @@ public final class ContextOuterClass {
                 if (other.eventType_ != 0) {
                     setEventTypeValue(other.getEventTypeValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -2935,54 +3152,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Event parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    eventType_ = input.readEnum();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Event) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Timestamp timestamp_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
@@ -2992,7 +3175,7 @@ public final class ContextOuterClass {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return timestampBuilder_ != null || timestamp_ != null;
             }
 
             /**
@@ -3016,11 +3199,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3030,11 +3212,10 @@ public final class ContextOuterClass {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3043,16 +3224,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getTimestampBuilder().mergeFrom(value);
+                    if (timestamp_ != null) {
+                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
                     } else {
                         timestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3060,13 +3240,13 @@ public final class ContextOuterClass {
              * <code>.context.Timestamp timestamp = 1;</code>
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                    onChanged();
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -3074,7 +3254,6 @@ public final class ContextOuterClass {
              * <code>.context.Timestamp timestamp = 1;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -3119,7 +3298,6 @@ public final class ContextOuterClass {
              */
             public Builder setEventTypeValue(int value) {
                 eventType_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -3130,7 +3308,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.EventTypeEnum getEventType() {
-                context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.forNumber(eventType_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.valueOf(eventType_);
                 return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result;
             }
 
@@ -3143,7 +3322,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000002;
                 eventType_ = value.getNumber();
                 onChanged();
                 return this;
@@ -3154,7 +3332,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearEventType() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 eventType_ = 0;
                 onChanged();
                 return this;
@@ -3187,17 +3364,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Event parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Event(input, extensionRegistry);
             }
         };
 
@@ -3263,6 +3430,57 @@ public final class ContextOuterClass {
             return new ContextId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ContextId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (contextUuid_ != null) {
+                                    subBuilder = contextUuid_.toBuilder();
+                                }
+                                contextUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextUuid_);
+                                    contextUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ContextId_descriptor;
         }
@@ -3299,7 +3517,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder() {
-            return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
+            return getContextUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -3320,7 +3538,7 @@ public final class ContextOuterClass {
             if (contextUuid_ != null) {
                 output.writeMessage(1, getContextUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -3332,7 +3550,7 @@ public final class ContextOuterClass {
             if (contextUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -3352,7 +3570,7 @@ public final class ContextOuterClass {
                 if (!getContextUuid().equals(other.getContextUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -3368,7 +3586,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONTEXT_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getContextUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -3466,19 +3684,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ContextId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextUuid_ = null;
-                if (contextUuidBuilder_ != null) {
-                    contextUuidBuilder_.dispose();
+                if (contextUuidBuilder_ == null) {
+                    contextUuid_ = null;
+                } else {
+                    contextUuid_ = null;
                     contextUuidBuilder_ = null;
                 }
                 return this;
@@ -3506,18 +3731,43 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ContextId buildPartial() {
                 context.ContextOuterClass.ContextId result = new context.ContextOuterClass.ContextId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (contextUuidBuilder_ == null) {
+                    result.contextUuid_ = contextUuid_;
+                } else {
+                    result.contextUuid_ = contextUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ContextId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextUuid_ = contextUuidBuilder_ == null ? contextUuid_ : contextUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -3536,7 +3786,7 @@ public final class ContextOuterClass {
                 if (other.hasContextUuid()) {
                     mergeContextUuid(other.getContextUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -3548,47 +3798,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ContextId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ContextId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid contextUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> contextUuidBuilder_;
@@ -3598,7 +3821,7 @@ public final class ContextOuterClass {
              * @return Whether the contextUuid field is set.
              */
             public boolean hasContextUuid() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return contextUuidBuilder_ != null || contextUuid_ != null;
             }
 
             /**
@@ -3622,11 +3845,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextUuid_ = value;
+                    onChanged();
                 } else {
                     contextUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3636,11 +3858,10 @@ public final class ContextOuterClass {
             public Builder setContextUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (contextUuidBuilder_ == null) {
                     contextUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3649,16 +3870,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextUuid(context.ContextOuterClass.Uuid value) {
                 if (contextUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextUuid_ != null && contextUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getContextUuidBuilder().mergeFrom(value);
+                    if (contextUuid_ != null) {
+                        contextUuid_ = context.ContextOuterClass.Uuid.newBuilder(contextUuid_).mergeFrom(value).buildPartial();
                     } else {
                         contextUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     contextUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3666,13 +3886,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid context_uuid = 1;</code>
              */
             public Builder clearContextUuid() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextUuid_ = null;
-                if (contextUuidBuilder_ != null) {
-                    contextUuidBuilder_.dispose();
+                if (contextUuidBuilder_ == null) {
+                    contextUuid_ = null;
+                    onChanged();
+                } else {
+                    contextUuid_ = null;
                     contextUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -3680,7 +3900,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid context_uuid = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getContextUuidBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextUuidFieldBuilder().getBuilder();
             }
@@ -3734,17 +3953,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ContextId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ContextId(input, extensionRegistry);
             }
         };
 
@@ -3914,6 +4123,113 @@ public final class ContextOuterClass {
             return new Context();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Context(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                topologyIds_.add(input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                serviceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 42:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
+                                    sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
+                                    mutable_bitField0_ |= 0x00000004;
+                                }
+                                sliceIds_.add(input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 50:
+                            {
+                                context.ContextOuterClass.TeraFlowController.Builder subBuilder = null;
+                                if (controller_ != null) {
+                                    subBuilder = controller_.toBuilder();
+                                }
+                                controller_ = input.readMessage(context.ContextOuterClass.TeraFlowController.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(controller_);
+                                    controller_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000004) != 0)) {
+                    sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Context_descriptor;
         }
@@ -3950,13 +4266,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            return getContextId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -3993,7 +4308,6 @@ public final class ContextOuterClass {
 
         public static final int TOPOLOGY_IDS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;
 
         /**
@@ -4038,7 +4352,6 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_IDS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;
 
         /**
@@ -4083,7 +4396,6 @@ public final class ContextOuterClass {
 
         public static final int SLICE_IDS_FIELD_NUMBER = 5;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.SliceId> sliceIds_;
 
         /**
@@ -4153,7 +4465,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() {
-            return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
+            return getController();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -4174,7 +4486,7 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 output.writeMessage(1, getContextId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < topologyIds_.size(); i++) {
@@ -4189,7 +4501,7 @@ public final class ContextOuterClass {
             if (controller_ != null) {
                 output.writeMessage(6, getController());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -4201,7 +4513,7 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < topologyIds_.size(); i++) {
@@ -4216,7 +4528,7 @@ public final class ContextOuterClass {
             if (controller_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getController());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -4250,7 +4562,7 @@ public final class ContextOuterClass {
                 if (!getController().equals(other.getController()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -4284,7 +4596,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONTROLLER_FIELD_NUMBER;
                 hash = (53 * hash) + getController().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -4378,46 +4690,54 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Context.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getTopologyIdsFieldBuilder();
+                    getServiceIdsFieldBuilder();
+                    getSliceIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
                 name_ = "";
                 if (topologyIdsBuilder_ == null) {
                     topologyIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    topologyIds_ = null;
                     topologyIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 if (serviceIdsBuilder_ == null) {
                     serviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    serviceIds_ = null;
                     serviceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
                 if (sliceIdsBuilder_ == null) {
                     sliceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
                 } else {
-                    sliceIds_ = null;
                     sliceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000010);
-                controller_ = null;
-                if (controllerBuilder_ != null) {
-                    controllerBuilder_.dispose();
+                if (controllerBuilder_ == null) {
+                    controller_ = null;
+                } else {
+                    controller_ = null;
                     controllerBuilder_ = null;
                 }
                 return this;
@@ -4445,55 +4765,77 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Context buildPartial() {
                 context.ContextOuterClass.Context result = new context.ContextOuterClass.Context(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Context result) {
+                result.name_ = name_;
                 if (topologyIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.topologyIds_ = topologyIds_;
                 } else {
                     result.topologyIds_ = topologyIdsBuilder_.build();
                 }
                 if (serviceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.serviceIds_ = serviceIds_;
                 } else {
                     result.serviceIds_ = serviceIdsBuilder_.build();
                 }
                 if (sliceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000010);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.sliceIds_ = sliceIds_;
                 } else {
                     result.sliceIds_ = sliceIdsBuilder_.build();
                 }
+                if (controllerBuilder_ == null) {
+                    result.controller_ = controller_;
+                } else {
+                    result.controller_ = controllerBuilder_.build();
+                }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Context result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.controller_ = controllerBuilder_ == null ? controller_ : controllerBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -4514,14 +4856,13 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (topologyIdsBuilder_ == null) {
                     if (!other.topologyIds_.isEmpty()) {
                         if (topologyIds_.isEmpty()) {
                             topologyIds_ = other.topologyIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureTopologyIdsIsMutable();
                             topologyIds_.addAll(other.topologyIds_);
@@ -4534,7 +4875,7 @@ public final class ContextOuterClass {
                             topologyIdsBuilder_.dispose();
                             topologyIdsBuilder_ = null;
                             topologyIds_ = other.topologyIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             topologyIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getTopologyIdsFieldBuilder() : null;
                         } else {
                             topologyIdsBuilder_.addAllMessages(other.topologyIds_);
@@ -4545,7 +4886,7 @@ public final class ContextOuterClass {
                     if (!other.serviceIds_.isEmpty()) {
                         if (serviceIds_.isEmpty()) {
                             serviceIds_ = other.serviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureServiceIdsIsMutable();
                             serviceIds_.addAll(other.serviceIds_);
@@ -4558,7 +4899,7 @@ public final class ContextOuterClass {
                             serviceIdsBuilder_.dispose();
                             serviceIdsBuilder_ = null;
                             serviceIds_ = other.serviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             serviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceIdsFieldBuilder() : null;
                         } else {
                             serviceIdsBuilder_.addAllMessages(other.serviceIds_);
@@ -4569,7 +4910,7 @@ public final class ContextOuterClass {
                     if (!other.sliceIds_.isEmpty()) {
                         if (sliceIds_.isEmpty()) {
                             sliceIds_ = other.sliceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureSliceIdsIsMutable();
                             sliceIds_.addAll(other.sliceIds_);
@@ -4582,7 +4923,7 @@ public final class ContextOuterClass {
                             sliceIdsBuilder_.dispose();
                             sliceIdsBuilder_ = null;
                             sliceIds_ = other.sliceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             sliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceIdsFieldBuilder() : null;
                         } else {
                             sliceIdsBuilder_.addAllMessages(other.sliceIds_);
@@ -4592,7 +4933,7 @@ public final class ContextOuterClass {
                 if (other.hasController()) {
                     mergeController(other.getController());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -4604,92 +4945,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Context parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.TopologyId m = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
-                                    if (topologyIdsBuilder_ == null) {
-                                        ensureTopologyIdsIsMutable();
-                                        topologyIds_.add(m);
-                                    } else {
-                                        topologyIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                    if (serviceIdsBuilder_ == null) {
-                                        ensureServiceIdsIsMutable();
-                                        serviceIds_.add(m);
-                                    } else {
-                                        serviceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-                                    if (sliceIdsBuilder_ == null) {
-                                        ensureSliceIdsIsMutable();
-                                        sliceIds_.add(m);
-                                    } else {
-                                        sliceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    input.readMessage(getControllerFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 50
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Context) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -4704,7 +4970,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return contextIdBuilder_ != null || contextId_ != null;
             }
 
             /**
@@ -4728,11 +4994,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -4742,11 +5007,10 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -4755,16 +5019,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
                     } else {
                         contextId_ = value;
                     }
+                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -4772,13 +5035,13 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -4786,7 +5049,6 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -4856,7 +5118,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -4867,7 +5128,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -4883,7 +5143,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -4891,9 +5150,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_ = java.util.Collections.emptyList();
 
             private void ensureTopologyIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>(topologyIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -5045,7 +5304,7 @@ public final class ContextOuterClass {
             public Builder clearTopologyIds() {
                 if (topologyIdsBuilder_ == null) {
                     topologyIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     topologyIdsBuilder_.clear();
@@ -5119,7 +5378,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsFieldBuilder() {
                 if (topologyIdsBuilder_ == null) {
-                    topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(topologyIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(topologyIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     topologyIds_ = null;
                 }
                 return topologyIdsBuilder_;
@@ -5128,9 +5387,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_ = java.util.Collections.emptyList();
 
             private void ensureServiceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(serviceIds_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -5282,7 +5541,7 @@ public final class ContextOuterClass {
             public Builder clearServiceIds() {
                 if (serviceIdsBuilder_ == null) {
                     serviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     serviceIdsBuilder_.clear();
@@ -5356,7 +5615,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsFieldBuilder() {
                 if (serviceIdsBuilder_ == null) {
-                    serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(serviceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(serviceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     serviceIds_ = null;
                 }
                 return serviceIdsBuilder_;
@@ -5365,9 +5624,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.SliceId> sliceIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000010) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceIds_);
-                    bitField0_ |= 0x00000010;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -5519,7 +5778,7 @@ public final class ContextOuterClass {
             public Builder clearSliceIds() {
                 if (sliceIdsBuilder_ == null) {
                     sliceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000010);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     sliceIdsBuilder_.clear();
@@ -5593,7 +5852,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsFieldBuilder() {
                 if (sliceIdsBuilder_ == null) {
-                    sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
+                    sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     sliceIds_ = null;
                 }
                 return sliceIdsBuilder_;
@@ -5608,7 +5867,7 @@ public final class ContextOuterClass {
              * @return Whether the controller field is set.
              */
             public boolean hasController() {
-                return ((bitField0_ & 0x00000020) != 0);
+                return controllerBuilder_ != null || controller_ != null;
             }
 
             /**
@@ -5632,11 +5891,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     controller_ = value;
+                    onChanged();
                 } else {
                     controllerBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -5646,11 +5904,10 @@ public final class ContextOuterClass {
             public Builder setController(context.ContextOuterClass.TeraFlowController.Builder builderForValue) {
                 if (controllerBuilder_ == null) {
                     controller_ = builderForValue.build();
+                    onChanged();
                 } else {
                     controllerBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -5659,16 +5916,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeController(context.ContextOuterClass.TeraFlowController value) {
                 if (controllerBuilder_ == null) {
-                    if (((bitField0_ & 0x00000020) != 0) && controller_ != null && controller_ != context.ContextOuterClass.TeraFlowController.getDefaultInstance()) {
-                        getControllerBuilder().mergeFrom(value);
+                    if (controller_ != null) {
+                        controller_ = context.ContextOuterClass.TeraFlowController.newBuilder(controller_).mergeFrom(value).buildPartial();
                     } else {
                         controller_ = value;
                     }
+                    onChanged();
                 } else {
                     controllerBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -5676,13 +5932,13 @@ public final class ContextOuterClass {
              * <code>.context.TeraFlowController controller = 6;</code>
              */
             public Builder clearController() {
-                bitField0_ = (bitField0_ & ~0x00000020);
-                controller_ = null;
-                if (controllerBuilder_ != null) {
-                    controllerBuilder_.dispose();
+                if (controllerBuilder_ == null) {
+                    controller_ = null;
+                    onChanged();
+                } else {
+                    controller_ = null;
                     controllerBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -5690,7 +5946,6 @@ public final class ContextOuterClass {
              * <code>.context.TeraFlowController controller = 6;</code>
              */
             public context.ContextOuterClass.TeraFlowController.Builder getControllerBuilder() {
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return getControllerFieldBuilder().getBuilder();
             }
@@ -5744,17 +5999,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Context parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Context(input, extensionRegistry);
             }
         };
 
@@ -5825,6 +6070,57 @@ public final class ContextOuterClass {
             return new ContextIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ContextIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    contextIds_ = new java.util.ArrayList<context.ContextOuterClass.ContextId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                contextIds_.add(input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    contextIds_ = java.util.Collections.unmodifiableList(contextIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
         }
@@ -5836,7 +6132,6 @@ public final class ContextOuterClass {
 
         public static final int CONTEXT_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ContextId> contextIds_;
 
         /**
@@ -5897,7 +6192,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < contextIds_.size(); i++) {
                 output.writeMessage(1, contextIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -5909,7 +6204,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < contextIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, contextIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -5925,7 +6220,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ContextIdList other = (context.ContextOuterClass.ContextIdList) obj;
             if (!getContextIdsList().equals(other.getContextIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -5941,7 +6236,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONTEXT_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getContextIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -6035,23 +6330,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ContextIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getContextIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (contextIdsBuilder_ == null) {
                     contextIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    contextIds_ = null;
                     contextIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -6077,15 +6378,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ContextIdList buildPartial() {
                 context.ContextOuterClass.ContextIdList result = new context.ContextOuterClass.ContextIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ContextIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (contextIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         contextIds_ = java.util.Collections.unmodifiableList(contextIds_);
@@ -6095,10 +6388,38 @@ public final class ContextOuterClass {
                 } else {
                     result.contextIds_ = contextIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ContextIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -6138,7 +6459,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -6150,47 +6471,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ContextIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.ContextId m = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-                                    if (contextIdsBuilder_ == null) {
-                                        ensureContextIdsIsMutable();
-                                        contextIds_.add(m);
-                                    } else {
-                                        contextIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ContextIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -6460,17 +6751,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ContextIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ContextIdList(input, extensionRegistry);
             }
         };
 
@@ -6541,6 +6822,57 @@ public final class ContextOuterClass {
             return new ContextList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ContextList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    contexts_ = new java.util.ArrayList<context.ContextOuterClass.Context>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                contexts_.add(input.readMessage(context.ContextOuterClass.Context.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    contexts_ = java.util.Collections.unmodifiableList(contexts_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
         }
@@ -6552,7 +6884,6 @@ public final class ContextOuterClass {
 
         public static final int CONTEXTS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Context> contexts_;
 
         /**
@@ -6613,7 +6944,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < contexts_.size(); i++) {
                 output.writeMessage(1, contexts_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -6625,7 +6956,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < contexts_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, contexts_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -6641,7 +6972,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ContextList other = (context.ContextOuterClass.ContextList) obj;
             if (!getContextsList().equals(other.getContextsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -6657,7 +6988,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONTEXTS_FIELD_NUMBER;
                 hash = (53 * hash) + getContextsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -6751,23 +7082,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ContextList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getContextsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (contextsBuilder_ == null) {
                     contexts_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    contexts_ = null;
                     contextsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -6793,15 +7130,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ContextList buildPartial() {
                 context.ContextOuterClass.ContextList result = new context.ContextOuterClass.ContextList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ContextList result) {
+                int from_bitField0_ = bitField0_;
                 if (contextsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         contexts_ = java.util.Collections.unmodifiableList(contexts_);
@@ -6811,10 +7140,38 @@ public final class ContextOuterClass {
                 } else {
                     result.contexts_ = contextsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ContextList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -6854,7 +7211,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -6866,47 +7223,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ContextList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Context m = input.readMessage(context.ContextOuterClass.Context.parser(), extensionRegistry);
-                                    if (contextsBuilder_ == null) {
-                                        ensureContextsIsMutable();
-                                        contexts_.add(m);
-                                    } else {
-                                        contextsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ContextList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -7176,17 +7503,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ContextList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ContextList(input, extensionRegistry);
             }
         };
 
@@ -7265,6 +7582,70 @@ public final class ContextOuterClass {
             return new ContextEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ContextEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
         }
@@ -7301,7 +7682,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int CONTEXT_ID_FIELD_NUMBER = 2;
@@ -7331,7 +7712,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            return getContextId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -7355,7 +7736,7 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 output.writeMessage(2, getContextId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -7370,7 +7751,7 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getContextId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -7396,7 +7777,7 @@ public final class ContextOuterClass {
                 if (!getContextId().equals(other.getContextId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -7416,7 +7797,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getContextId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -7510,24 +7891,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ContextEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
                 return this;
@@ -7555,21 +7944,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ContextEvent buildPartial() {
                 context.ContextOuterClass.ContextEvent result = new context.ContextOuterClass.ContextEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ContextEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -7591,7 +8007,7 @@ public final class ContextOuterClass {
                 if (other.hasContextId()) {
                     mergeContextId(other.getContextId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -7603,54 +8019,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ContextEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ContextEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -7660,7 +8042,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -7684,11 +8066,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -7698,11 +8079,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -7711,16 +8091,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -7728,13 +8107,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -7742,7 +8121,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -7778,7 +8156,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return contextIdBuilder_ != null || contextId_ != null;
             }
 
             /**
@@ -7802,11 +8180,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -7816,11 +8193,10 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -7829,16 +8205,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
                     } else {
                         contextId_ = value;
                     }
+                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -7846,13 +8221,13 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 2;</code>
              */
             public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -7860,7 +8235,6 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 2;</code>
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -7914,17 +8288,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ContextEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ContextEvent(input, extensionRegistry);
             }
         };
 
@@ -8007,6 +8371,70 @@ public final class ContextOuterClass {
             return new TopologyId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private TopologyId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (topologyUuid_ != null) {
+                                    subBuilder = topologyUuid_.toBuilder();
+                                }
+                                topologyUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(topologyUuid_);
+                                    topologyUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
         }
@@ -8043,7 +8471,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            return getContextId();
         }
 
         public static final int TOPOLOGY_UUID_FIELD_NUMBER = 2;
@@ -8073,7 +8501,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder() {
-            return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
+            return getTopologyUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -8097,7 +8525,7 @@ public final class ContextOuterClass {
             if (topologyUuid_ != null) {
                 output.writeMessage(2, getTopologyUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -8112,7 +8540,7 @@ public final class ContextOuterClass {
             if (topologyUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTopologyUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -8138,7 +8566,7 @@ public final class ContextOuterClass {
                 if (!getTopologyUuid().equals(other.getTopologyUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -8158,7 +8586,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TOPOLOGY_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getTopologyUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -8256,24 +8684,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.TopologyId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                topologyUuid_ = null;
-                if (topologyUuidBuilder_ != null) {
-                    topologyUuidBuilder_.dispose();
+                if (topologyUuidBuilder_ == null) {
+                    topologyUuid_ = null;
+                } else {
+                    topologyUuid_ = null;
                     topologyUuidBuilder_ = null;
                 }
                 return this;
@@ -8301,21 +8737,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.TopologyId buildPartial() {
                 context.ContextOuterClass.TopologyId result = new context.ContextOuterClass.TopologyId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
+                }
+                if (topologyUuidBuilder_ == null) {
+                    result.topologyUuid_ = topologyUuid_;
+                } else {
+                    result.topologyUuid_ = topologyUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.TopologyId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.topologyUuid_ = topologyUuidBuilder_ == null ? topologyUuid_ : topologyUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -8337,7 +8800,7 @@ public final class ContextOuterClass {
                 if (other.hasTopologyUuid()) {
                     mergeTopologyUuid(other.getTopologyUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -8349,54 +8812,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.TopologyId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getTopologyUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.TopologyId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
@@ -8406,7 +8835,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return contextIdBuilder_ != null || contextId_ != null;
             }
 
             /**
@@ -8430,11 +8859,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -8444,11 +8872,10 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -8457,16 +8884,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
                     } else {
                         contextId_ = value;
                     }
+                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -8474,13 +8900,13 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -8488,7 +8914,6 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -8524,7 +8949,7 @@ public final class ContextOuterClass {
              * @return Whether the topologyUuid field is set.
              */
             public boolean hasTopologyUuid() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return topologyUuidBuilder_ != null || topologyUuid_ != null;
             }
 
             /**
@@ -8548,11 +8973,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     topologyUuid_ = value;
+                    onChanged();
                 } else {
                     topologyUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -8562,11 +8986,10 @@ public final class ContextOuterClass {
             public Builder setTopologyUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (topologyUuidBuilder_ == null) {
                     topologyUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     topologyUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -8575,16 +8998,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTopologyUuid(context.ContextOuterClass.Uuid value) {
                 if (topologyUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && topologyUuid_ != null && topologyUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getTopologyUuidBuilder().mergeFrom(value);
+                    if (topologyUuid_ != null) {
+                        topologyUuid_ = context.ContextOuterClass.Uuid.newBuilder(topologyUuid_).mergeFrom(value).buildPartial();
                     } else {
                         topologyUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     topologyUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -8592,13 +9014,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid topology_uuid = 2;</code>
              */
             public Builder clearTopologyUuid() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                topologyUuid_ = null;
-                if (topologyUuidBuilder_ != null) {
-                    topologyUuidBuilder_.dispose();
+                if (topologyUuidBuilder_ == null) {
+                    topologyUuid_ = null;
+                    onChanged();
+                } else {
+                    topologyUuid_ = null;
                     topologyUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -8606,7 +9028,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid topology_uuid = 2;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getTopologyUuidBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getTopologyUuidFieldBuilder().getBuilder();
             }
@@ -8660,17 +9081,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public TopologyId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new TopologyId(input, extensionRegistry);
             }
         };
 
@@ -8797,6 +9208,88 @@ public final class ContextOuterClass {
             return new Topology();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Topology(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.TopologyId.Builder subBuilder = null;
+                                if (topologyId_ != null) {
+                                    subBuilder = topologyId_.toBuilder();
+                                }
+                                topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(topologyId_);
+                                    topologyId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                deviceIds_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                linkIds_.add(input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Topology_descriptor;
         }
@@ -8833,13 +9326,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+            return getTopologyId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -8876,7 +9368,6 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_IDS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
 
         /**
@@ -8921,7 +9412,6 @@ public final class ContextOuterClass {
 
         public static final int LINK_IDS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
 
         /**
@@ -8982,7 +9472,7 @@ public final class ContextOuterClass {
             if (topologyId_ != null) {
                 output.writeMessage(1, getTopologyId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < deviceIds_.size(); i++) {
@@ -8991,7 +9481,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 output.writeMessage(4, linkIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -9003,7 +9493,7 @@ public final class ContextOuterClass {
             if (topologyId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < deviceIds_.size(); i++) {
@@ -9012,7 +9502,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -9038,7 +9528,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getLinkIdsList().equals(other.getLinkIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -9064,7 +9554,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -9158,36 +9648,43 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Topology.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDeviceIdsFieldBuilder();
+                    getLinkIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
                 name_ = "";
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    deviceIds_ = null;
                     deviceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    linkIds_ = null;
                     linkIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
                 return this;
             }
 
@@ -9213,43 +9710,63 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Topology buildPartial() {
                 context.ContextOuterClass.Topology result = new context.ContextOuterClass.Topology(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (topologyIdBuilder_ == null) {
+                    result.topologyId_ = topologyId_;
+                } else {
+                    result.topologyId_ = topologyIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Topology result) {
+                result.name_ = name_;
                 if (deviceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.deviceIds_ = deviceIds_;
                 } else {
                     result.deviceIds_ = deviceIdsBuilder_.build();
                 }
                 if (linkIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.linkIds_ = linkIds_;
                 } else {
                     result.linkIds_ = linkIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Topology result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -9270,14 +9787,13 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (deviceIdsBuilder_ == null) {
                     if (!other.deviceIds_.isEmpty()) {
                         if (deviceIds_.isEmpty()) {
                             deviceIds_ = other.deviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureDeviceIdsIsMutable();
                             deviceIds_.addAll(other.deviceIds_);
@@ -9290,7 +9806,7 @@ public final class ContextOuterClass {
                             deviceIdsBuilder_.dispose();
                             deviceIdsBuilder_ = null;
                             deviceIds_ = other.deviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null;
                         } else {
                             deviceIdsBuilder_.addAllMessages(other.deviceIds_);
@@ -9301,7 +9817,7 @@ public final class ContextOuterClass {
                     if (!other.linkIds_.isEmpty()) {
                         if (linkIds_.isEmpty()) {
                             linkIds_ = other.linkIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureLinkIdsIsMutable();
                             linkIds_.addAll(other.linkIds_);
@@ -9314,14 +9830,14 @@ public final class ContextOuterClass {
                             linkIdsBuilder_.dispose();
                             linkIdsBuilder_ = null;
                             linkIds_ = other.linkIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null;
                         } else {
                             linkIdsBuilder_.addAllMessages(other.linkIds_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -9333,73 +9849,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Topology parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-                                    if (deviceIdsBuilder_ == null) {
-                                        ensureDeviceIdsIsMutable();
-                                        deviceIds_.add(m);
-                                    } else {
-                                        deviceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-                                    if (linkIdsBuilder_ == null) {
-                                        ensureLinkIdsIsMutable();
-                                        linkIds_.add(m);
-                                    } else {
-                                        linkIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Topology) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -9414,7 +9874,7 @@ public final class ContextOuterClass {
              * @return Whether the topologyId field is set.
              */
             public boolean hasTopologyId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return topologyIdBuilder_ != null || topologyId_ != null;
             }
 
             /**
@@ -9438,11 +9898,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     topologyId_ = value;
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -9452,11 +9911,10 @@ public final class ContextOuterClass {
             public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                 if (topologyIdBuilder_ == null) {
                     topologyId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -9465,16 +9923,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                 if (topologyIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
-                        getTopologyIdBuilder().mergeFrom(value);
+                    if (topologyId_ != null) {
+                        topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
                     } else {
                         topologyId_ = value;
                     }
+                    onChanged();
                 } else {
                     topologyIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -9482,13 +9939,13 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 1;</code>
              */
             public Builder clearTopologyId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                    onChanged();
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -9496,7 +9953,6 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 1;</code>
              */
             public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTopologyIdFieldBuilder().getBuilder();
             }
@@ -9566,7 +10022,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -9577,7 +10032,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -9593,7 +10047,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -9601,9 +10054,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ = java.util.Collections.emptyList();
 
             private void ensureDeviceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -9755,7 +10208,7 @@ public final class ContextOuterClass {
             public Builder clearDeviceIds() {
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     deviceIdsBuilder_.clear();
@@ -9829,7 +10282,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsFieldBuilder() {
                 if (deviceIdsBuilder_ == null) {
-                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     deviceIds_ = null;
                 }
                 return deviceIdsBuilder_;
@@ -9838,9 +10291,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.LinkId> linkIds_ = java.util.Collections.emptyList();
 
             private void ensureLinkIdsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -9992,7 +10445,7 @@ public final class ContextOuterClass {
             public Builder clearLinkIds() {
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     linkIdsBuilder_.clear();
@@ -10066,7 +10519,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsFieldBuilder() {
                 if (linkIdsBuilder_ == null) {
-                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     linkIds_ = null;
                 }
                 return linkIdsBuilder_;
@@ -10099,17 +10552,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Topology parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Topology(input, extensionRegistry);
             }
         };
 
@@ -10236,6 +10679,88 @@ public final class ContextOuterClass {
             return new TopologyDetails();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private TopologyDetails(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.TopologyId.Builder subBuilder = null;
+                                if (topologyId_ != null) {
+                                    subBuilder = topologyId_.toBuilder();
+                                }
+                                topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(topologyId_);
+                                    topologyId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                devices_.add(input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    links_ = new java.util.ArrayList<context.ContextOuterClass.Link>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                links_.add(input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    devices_ = java.util.Collections.unmodifiableList(devices_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    links_ = java.util.Collections.unmodifiableList(links_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
         }
@@ -10272,13 +10797,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+            return getTopologyId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -10315,7 +10839,6 @@ public final class ContextOuterClass {
 
         public static final int DEVICES_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Device> devices_;
 
         /**
@@ -10360,7 +10883,6 @@ public final class ContextOuterClass {
 
         public static final int LINKS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Link> links_;
 
         /**
@@ -10421,7 +10943,7 @@ public final class ContextOuterClass {
             if (topologyId_ != null) {
                 output.writeMessage(1, getTopologyId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < devices_.size(); i++) {
@@ -10430,7 +10952,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < links_.size(); i++) {
                 output.writeMessage(4, links_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -10442,7 +10964,7 @@ public final class ContextOuterClass {
             if (topologyId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < devices_.size(); i++) {
@@ -10451,7 +10973,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < links_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, links_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -10477,7 +10999,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getLinksList().equals(other.getLinksList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -10503,7 +11025,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINKS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinksList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -10597,36 +11119,43 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.TopologyDetails.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDevicesFieldBuilder();
+                    getLinksFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
                 name_ = "";
                 if (devicesBuilder_ == null) {
                     devices_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    devices_ = null;
                     devicesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 if (linksBuilder_ == null) {
                     links_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    links_ = null;
                     linksBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
                 return this;
             }
 
@@ -10652,43 +11181,63 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.TopologyDetails buildPartial() {
                 context.ContextOuterClass.TopologyDetails result = new context.ContextOuterClass.TopologyDetails(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (topologyIdBuilder_ == null) {
+                    result.topologyId_ = topologyId_;
+                } else {
+                    result.topologyId_ = topologyIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyDetails result) {
+                result.name_ = name_;
                 if (devicesBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         devices_ = java.util.Collections.unmodifiableList(devices_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.devices_ = devices_;
                 } else {
                     result.devices_ = devicesBuilder_.build();
                 }
                 if (linksBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         links_ = java.util.Collections.unmodifiableList(links_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.links_ = links_;
                 } else {
                     result.links_ = linksBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.TopologyDetails result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -10709,14 +11258,13 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (devicesBuilder_ == null) {
                     if (!other.devices_.isEmpty()) {
                         if (devices_.isEmpty()) {
                             devices_ = other.devices_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureDevicesIsMutable();
                             devices_.addAll(other.devices_);
@@ -10729,7 +11277,7 @@ public final class ContextOuterClass {
                             devicesBuilder_.dispose();
                             devicesBuilder_ = null;
                             devices_ = other.devices_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             devicesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDevicesFieldBuilder() : null;
                         } else {
                             devicesBuilder_.addAllMessages(other.devices_);
@@ -10740,7 +11288,7 @@ public final class ContextOuterClass {
                     if (!other.links_.isEmpty()) {
                         if (links_.isEmpty()) {
                             links_ = other.links_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureLinksIsMutable();
                             links_.addAll(other.links_);
@@ -10753,14 +11301,14 @@ public final class ContextOuterClass {
                             linksBuilder_.dispose();
                             linksBuilder_ = null;
                             links_ = other.links_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             linksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinksFieldBuilder() : null;
                         } else {
                             linksBuilder_.addAllMessages(other.links_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -10772,73 +11320,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.TopologyDetails parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.Device m = input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry);
-                                    if (devicesBuilder_ == null) {
-                                        ensureDevicesIsMutable();
-                                        devices_.add(m);
-                                    } else {
-                                        devicesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    context.ContextOuterClass.Link m = input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry);
-                                    if (linksBuilder_ == null) {
-                                        ensureLinksIsMutable();
-                                        links_.add(m);
-                                    } else {
-                                        linksBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.TopologyDetails) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -10853,7 +11345,7 @@ public final class ContextOuterClass {
              * @return Whether the topologyId field is set.
              */
             public boolean hasTopologyId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return topologyIdBuilder_ != null || topologyId_ != null;
             }
 
             /**
@@ -10877,11 +11369,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     topologyId_ = value;
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -10891,11 +11382,10 @@ public final class ContextOuterClass {
             public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                 if (topologyIdBuilder_ == null) {
                     topologyId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -10904,16 +11394,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                 if (topologyIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
-                        getTopologyIdBuilder().mergeFrom(value);
+                    if (topologyId_ != null) {
+                        topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
                     } else {
                         topologyId_ = value;
                     }
+                    onChanged();
                 } else {
                     topologyIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -10921,13 +11410,13 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 1;</code>
              */
             public Builder clearTopologyId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                    onChanged();
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -10935,7 +11424,6 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 1;</code>
              */
             public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTopologyIdFieldBuilder().getBuilder();
             }
@@ -11005,7 +11493,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -11016,7 +11503,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -11032,7 +11518,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -11040,9 +11525,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.Device> devices_ = java.util.Collections.emptyList();
 
             private void ensureDevicesIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>(devices_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -11194,7 +11679,7 @@ public final class ContextOuterClass {
             public Builder clearDevices() {
                 if (devicesBuilder_ == null) {
                     devices_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     devicesBuilder_.clear();
@@ -11268,7 +11753,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> getDevicesFieldBuilder() {
                 if (devicesBuilder_ == null) {
-                    devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder>(devices_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder>(devices_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     devices_ = null;
                 }
                 return devicesBuilder_;
@@ -11277,9 +11762,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.Link> links_ = java.util.Collections.emptyList();
 
             private void ensureLinksIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     links_ = new java.util.ArrayList<context.ContextOuterClass.Link>(links_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -11431,7 +11916,7 @@ public final class ContextOuterClass {
             public Builder clearLinks() {
                 if (linksBuilder_ == null) {
                     links_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     linksBuilder_.clear();
@@ -11505,7 +11990,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> getLinksFieldBuilder() {
                 if (linksBuilder_ == null) {
-                    linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder>(links_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder>(links_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     links_ = null;
                 }
                 return linksBuilder_;
@@ -11538,17 +12023,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public TopologyDetails parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new TopologyDetails(input, extensionRegistry);
             }
         };
 
@@ -11619,6 +12094,57 @@ public final class ContextOuterClass {
             return new TopologyIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private TopologyIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                topologyIds_.add(input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
         }
@@ -11630,7 +12156,6 @@ public final class ContextOuterClass {
 
         public static final int TOPOLOGY_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;
 
         /**
@@ -11691,7 +12216,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < topologyIds_.size(); i++) {
                 output.writeMessage(1, topologyIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -11703,7 +12228,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < topologyIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, topologyIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -11719,7 +12244,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.TopologyIdList other = (context.ContextOuterClass.TopologyIdList) obj;
             if (!getTopologyIdsList().equals(other.getTopologyIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -11735,7 +12260,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TOPOLOGY_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getTopologyIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -11829,23 +12354,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.TopologyIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getTopologyIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (topologyIdsBuilder_ == null) {
                     topologyIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    topologyIds_ = null;
                     topologyIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -11871,15 +12402,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.TopologyIdList buildPartial() {
                 context.ContextOuterClass.TopologyIdList result = new context.ContextOuterClass.TopologyIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (topologyIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
@@ -11889,10 +12412,38 @@ public final class ContextOuterClass {
                 } else {
                     result.topologyIds_ = topologyIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.TopologyIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -11932,7 +12483,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -11944,47 +12495,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.TopologyIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.TopologyId m = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
-                                    if (topologyIdsBuilder_ == null) {
-                                        ensureTopologyIdsIsMutable();
-                                        topologyIds_.add(m);
-                                    } else {
-                                        topologyIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.TopologyIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -12254,17 +12775,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public TopologyIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new TopologyIdList(input, extensionRegistry);
             }
         };
 
@@ -12335,6 +12846,57 @@ public final class ContextOuterClass {
             return new TopologyList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private TopologyList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    topologies_ = new java.util.ArrayList<context.ContextOuterClass.Topology>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                topologies_.add(input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    topologies_ = java.util.Collections.unmodifiableList(topologies_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
         }
@@ -12346,7 +12908,6 @@ public final class ContextOuterClass {
 
         public static final int TOPOLOGIES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Topology> topologies_;
 
         /**
@@ -12407,7 +12968,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < topologies_.size(); i++) {
                 output.writeMessage(1, topologies_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -12419,7 +12980,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < topologies_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, topologies_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -12435,7 +12996,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.TopologyList other = (context.ContextOuterClass.TopologyList) obj;
             if (!getTopologiesList().equals(other.getTopologiesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -12451,7 +13012,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TOPOLOGIES_FIELD_NUMBER;
                 hash = (53 * hash) + getTopologiesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -12545,23 +13106,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.TopologyList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getTopologiesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (topologiesBuilder_ == null) {
                     topologies_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    topologies_ = null;
                     topologiesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -12587,15 +13154,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.TopologyList buildPartial() {
                 context.ContextOuterClass.TopologyList result = new context.ContextOuterClass.TopologyList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyList result) {
+                int from_bitField0_ = bitField0_;
                 if (topologiesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         topologies_ = java.util.Collections.unmodifiableList(topologies_);
@@ -12605,10 +13164,38 @@ public final class ContextOuterClass {
                 } else {
                     result.topologies_ = topologiesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.TopologyList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -12648,7 +13235,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -12660,47 +13247,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.TopologyList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Topology m = input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry);
-                                    if (topologiesBuilder_ == null) {
-                                        ensureTopologiesIsMutable();
-                                        topologies_.add(m);
-                                    } else {
-                                        topologiesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.TopologyList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -12970,17 +13527,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public TopologyList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new TopologyList(input, extensionRegistry);
             }
         };
 
@@ -13059,6 +13606,70 @@ public final class ContextOuterClass {
             return new TopologyEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private TopologyEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.TopologyId.Builder subBuilder = null;
+                                if (topologyId_ != null) {
+                                    subBuilder = topologyId_.toBuilder();
+                                }
+                                topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(topologyId_);
+                                    topologyId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
         }
@@ -13095,7 +13706,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int TOPOLOGY_ID_FIELD_NUMBER = 2;
@@ -13125,7 +13736,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+            return getTopologyId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -13149,7 +13760,7 @@ public final class ContextOuterClass {
             if (topologyId_ != null) {
                 output.writeMessage(2, getTopologyId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -13164,7 +13775,7 @@ public final class ContextOuterClass {
             if (topologyId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTopologyId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -13190,7 +13801,7 @@ public final class ContextOuterClass {
                 if (!getTopologyId().equals(other.getTopologyId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -13210,7 +13821,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getTopologyId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -13304,24 +13915,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.TopologyEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
                 return this;
@@ -13349,21 +13968,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.TopologyEvent buildPartial() {
                 context.ContextOuterClass.TopologyEvent result = new context.ContextOuterClass.TopologyEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (topologyIdBuilder_ == null) {
+                    result.topologyId_ = topologyId_;
+                } else {
+                    result.topologyId_ = topologyIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.TopologyEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -13385,7 +14031,7 @@ public final class ContextOuterClass {
                 if (other.hasTopologyId()) {
                     mergeTopologyId(other.getTopologyId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -13397,54 +14043,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.TopologyEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.TopologyEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -13454,7 +14066,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -13478,11 +14090,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -13492,11 +14103,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -13505,16 +14115,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -13522,13 +14131,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -13536,7 +14145,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -13572,7 +14180,7 @@ public final class ContextOuterClass {
              * @return Whether the topologyId field is set.
              */
             public boolean hasTopologyId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return topologyIdBuilder_ != null || topologyId_ != null;
             }
 
             /**
@@ -13596,11 +14204,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     topologyId_ = value;
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -13610,11 +14217,10 @@ public final class ContextOuterClass {
             public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                 if (topologyIdBuilder_ == null) {
                     topologyId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -13623,16 +14229,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                 if (topologyIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
-                        getTopologyIdBuilder().mergeFrom(value);
+                    if (topologyId_ != null) {
+                        topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
                     } else {
                         topologyId_ = value;
                     }
+                    onChanged();
                 } else {
                     topologyIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -13640,13 +14245,13 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 2;</code>
              */
             public Builder clearTopologyId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                    onChanged();
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -13654,7 +14259,6 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 2;</code>
              */
             public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getTopologyIdFieldBuilder().getBuilder();
             }
@@ -13708,17 +14312,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public TopologyEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new TopologyEvent(input, extensionRegistry);
             }
         };
 
@@ -13784,6 +14378,57 @@ public final class ContextOuterClass {
             return new DeviceId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (deviceUuid_ != null) {
+                                    subBuilder = deviceUuid_.toBuilder();
+                                }
+                                deviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceUuid_);
+                                    deviceUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
         }
@@ -13820,7 +14465,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
-            return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
+            return getDeviceUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -13841,7 +14486,7 @@ public final class ContextOuterClass {
             if (deviceUuid_ != null) {
                 output.writeMessage(1, getDeviceUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -13853,7 +14498,7 @@ public final class ContextOuterClass {
             if (deviceUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -13873,7 +14518,7 @@ public final class ContextOuterClass {
                 if (!getDeviceUuid().equals(other.getDeviceUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -13889,7 +14534,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICE_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -13987,19 +14632,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                deviceUuid_ = null;
-                if (deviceUuidBuilder_ != null) {
-                    deviceUuidBuilder_.dispose();
+                if (deviceUuidBuilder_ == null) {
+                    deviceUuid_ = null;
+                } else {
+                    deviceUuid_ = null;
                     deviceUuidBuilder_ = null;
                 }
                 return this;
@@ -14027,18 +14679,43 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceId buildPartial() {
                 context.ContextOuterClass.DeviceId result = new context.ContextOuterClass.DeviceId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (deviceUuidBuilder_ == null) {
+                    result.deviceUuid_ = deviceUuid_;
+                } else {
+                    result.deviceUuid_ = deviceUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.DeviceId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.deviceUuid_ = deviceUuidBuilder_ == null ? deviceUuid_ : deviceUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -14057,7 +14734,7 @@ public final class ContextOuterClass {
                 if (other.hasDeviceUuid()) {
                     mergeDeviceUuid(other.getDeviceUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -14069,47 +14746,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.DeviceId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getDeviceUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.DeviceId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid deviceUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> deviceUuidBuilder_;
@@ -14119,7 +14769,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceUuid field is set.
              */
             public boolean hasDeviceUuid() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return deviceUuidBuilder_ != null || deviceUuid_ != null;
             }
 
             /**
@@ -14143,11 +14793,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceUuid_ = value;
+                    onChanged();
                 } else {
                     deviceUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -14157,11 +14806,10 @@ public final class ContextOuterClass {
             public Builder setDeviceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (deviceUuidBuilder_ == null) {
                     deviceUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -14170,16 +14818,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceUuid(context.ContextOuterClass.Uuid value) {
                 if (deviceUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && deviceUuid_ != null && deviceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getDeviceUuidBuilder().mergeFrom(value);
+                    if (deviceUuid_ != null) {
+                        deviceUuid_ = context.ContextOuterClass.Uuid.newBuilder(deviceUuid_).mergeFrom(value).buildPartial();
                     } else {
                         deviceUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -14187,13 +14834,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid device_uuid = 1;</code>
              */
             public Builder clearDeviceUuid() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                deviceUuid_ = null;
-                if (deviceUuidBuilder_ != null) {
-                    deviceUuidBuilder_.dispose();
+                if (deviceUuidBuilder_ == null) {
+                    deviceUuid_ = null;
+                    onChanged();
+                } else {
+                    deviceUuid_ = null;
                     deviceUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -14201,7 +14848,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid device_uuid = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getDeviceUuidBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDeviceUuidFieldBuilder().getBuilder();
             }
@@ -14255,17 +14901,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceId(input, extensionRegistry);
             }
         };
 
@@ -14517,6 +15153,154 @@ public final class ContextOuterClass {
             return new Device();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Device(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+                                if (deviceId_ != null) {
+                                    subBuilder = deviceId_.toBuilder();
+                                }
+                                deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceId_);
+                                    deviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                deviceType_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
+                                if (deviceConfig_ != null) {
+                                    subBuilder = deviceConfig_.toBuilder();
+                                }
+                                deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceConfig_);
+                                    deviceConfig_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 40:
+                            {
+                                int rawValue = input.readEnum();
+                                deviceOperationalStatus_ = rawValue;
+                                break;
+                            }
+                        case 48:
+                            {
+                                int rawValue = input.readEnum();
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                deviceDrivers_.add(rawValue);
+                                break;
+                            }
+                        case 50:
+                            {
+                                int length = input.readRawVarint32();
+                                int oldLimit = input.pushLimit(length);
+                                while (input.getBytesUntilLimit() > 0) {
+                                    int rawValue = input.readEnum();
+                                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                        deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>();
+                                        mutable_bitField0_ |= 0x00000001;
+                                    }
+                                    deviceDrivers_.add(rawValue);
+                                }
+                                input.popLimit(oldLimit);
+                                break;
+                            }
+                        case 58:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                deviceEndpoints_.add(input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 66:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
+                                    components_ = new java.util.ArrayList<context.ContextOuterClass.Component>();
+                                    mutable_bitField0_ |= 0x00000004;
+                                }
+                                components_.add(input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 74:
+                            {
+                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+                                if (controllerId_ != null) {
+                                    subBuilder = controllerId_.toBuilder();
+                                }
+                                controllerId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(controllerId_);
+                                    controllerId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
+                }
+                if (((mutable_bitField0_ & 0x00000004) != 0)) {
+                    components_ = java.util.Collections.unmodifiableList(components_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Device_descriptor;
         }
@@ -14553,13 +15337,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+            return getDeviceId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -14596,8 +15379,7 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_TYPE_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object deviceType_ = "";
+        private volatile java.lang.Object deviceType_;
 
         /**
          * <code>string device_type = 3;</code>
@@ -14659,12 +15441,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
-            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
+            return getDeviceConfig();
         }
 
         public static final int DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER = 5;
 
-        private int deviceOperationalStatus_ = 0;
+        private int deviceOperationalStatus_;
 
         /**
          * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
@@ -14681,19 +15463,20 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
-            context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.forNumber(deviceOperationalStatus_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_);
             return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
         }
 
         public static final int DEVICE_DRIVERS_FIELD_NUMBER = 6;
 
-        @SuppressWarnings("serial")
         private java.util.List<java.lang.Integer> deviceDrivers_;
 
         private static final com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum> deviceDrivers_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>() {
 
             public context.ContextOuterClass.DeviceDriverEnum convert(java.lang.Integer from) {
-                context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.forNumber(from);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.valueOf(from);
                 return result == null ? context.ContextOuterClass.DeviceDriverEnum.UNRECOGNIZED : result;
             }
         };
@@ -14749,7 +15532,6 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_ENDPOINTS_FIELD_NUMBER = 7;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_;
 
         /**
@@ -14794,7 +15576,6 @@ public final class ContextOuterClass {
 
         public static final int COMPONENTS_FIELD_NUMBER = 8;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Component> components_;
 
         /**
@@ -14896,7 +15677,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getControllerIdOrBuilder() {
-            return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_;
+            return getControllerId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -14918,10 +15699,10 @@ public final class ContextOuterClass {
             if (deviceId_ != null) {
                 output.writeMessage(1, getDeviceId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceType_)) {
+            if (!getDeviceTypeBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, deviceType_);
             }
             if (deviceConfig_ != null) {
@@ -14946,7 +15727,7 @@ public final class ContextOuterClass {
             if (controllerId_ != null) {
                 output.writeMessage(9, getControllerId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -14958,10 +15739,10 @@ public final class ContextOuterClass {
             if (deviceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceType_)) {
+            if (!getDeviceTypeBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, deviceType_);
             }
             if (deviceConfig_ != null) {
@@ -14991,7 +15772,7 @@ public final class ContextOuterClass {
             if (controllerId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getControllerId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -15035,7 +15816,7 @@ public final class ContextOuterClass {
                 if (!getControllerId().equals(other.getControllerId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -15077,7 +15858,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONTROLLER_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getControllerId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -15171,48 +15952,57 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Device.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDeviceEndpointsFieldBuilder();
+                    getComponentsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
                 name_ = "";
                 deviceType_ = "";
-                deviceConfig_ = null;
-                if (deviceConfigBuilder_ != null) {
-                    deviceConfigBuilder_.dispose();
+                if (deviceConfigBuilder_ == null) {
+                    deviceConfig_ = null;
+                } else {
+                    deviceConfig_ = null;
                     deviceConfigBuilder_ = null;
                 }
                 deviceOperationalStatus_ = 0;
                 deviceDrivers_ = java.util.Collections.emptyList();
-                bitField0_ = (bitField0_ & ~0x00000020);
+                bitField0_ = (bitField0_ & ~0x00000001);
                 if (deviceEndpointsBuilder_ == null) {
                     deviceEndpoints_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    deviceEndpoints_ = null;
                     deviceEndpointsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000040);
                 if (componentsBuilder_ == null) {
                     components_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
                 } else {
-                    components_ = null;
                     componentsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000080);
-                controllerId_ = null;
-                if (controllerIdBuilder_ != null) {
-                    controllerIdBuilder_.dispose();
+                if (controllerIdBuilder_ == null) {
+                    controllerId_ = null;
+                } else {
+                    controllerId_ = null;
                     controllerIdBuilder_ = null;
                 }
                 return this;
@@ -15240,60 +16030,80 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Device buildPartial() {
                 context.ContextOuterClass.Device result = new context.ContextOuterClass.Device(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (deviceIdBuilder_ == null) {
+                    result.deviceId_ = deviceId_;
+                } else {
+                    result.deviceId_ = deviceIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Device result) {
-                if (((bitField0_ & 0x00000020) != 0)) {
+                result.name_ = name_;
+                result.deviceType_ = deviceType_;
+                if (deviceConfigBuilder_ == null) {
+                    result.deviceConfig_ = deviceConfig_;
+                } else {
+                    result.deviceConfig_ = deviceConfigBuilder_.build();
+                }
+                result.deviceOperationalStatus_ = deviceOperationalStatus_;
+                if (((bitField0_ & 0x00000001) != 0)) {
                     deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
-                    bitField0_ = (bitField0_ & ~0x00000020);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 }
                 result.deviceDrivers_ = deviceDrivers_;
                 if (deviceEndpointsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000040) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
-                        bitField0_ = (bitField0_ & ~0x00000040);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.deviceEndpoints_ = deviceEndpoints_;
                 } else {
                     result.deviceEndpoints_ = deviceEndpointsBuilder_.build();
                 }
                 if (componentsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000080) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         components_ = java.util.Collections.unmodifiableList(components_);
-                        bitField0_ = (bitField0_ & ~0x00000080);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.components_ = components_;
                 } else {
                     result.components_ = componentsBuilder_.build();
                 }
+                if (controllerIdBuilder_ == null) {
+                    result.controllerId_ = controllerId_;
+                } else {
+                    result.controllerId_ = controllerIdBuilder_.build();
+                }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Device result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.deviceType_ = deviceType_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.deviceConfig_ = deviceConfigBuilder_ == null ? deviceConfig_ : deviceConfigBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.deviceOperationalStatus_ = deviceOperationalStatus_;
-                }
-                if (((from_bitField0_ & 0x00000100) != 0)) {
-                    result.controllerId_ = controllerIdBuilder_ == null ? controllerId_ : controllerIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -15314,12 +16124,10 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getDeviceType().isEmpty()) {
                     deviceType_ = other.deviceType_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (other.hasDeviceConfig()) {
@@ -15331,7 +16139,7 @@ public final class ContextOuterClass {
                 if (!other.deviceDrivers_.isEmpty()) {
                     if (deviceDrivers_.isEmpty()) {
                         deviceDrivers_ = other.deviceDrivers_;
-                        bitField0_ = (bitField0_ & ~0x00000020);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     } else {
                         ensureDeviceDriversIsMutable();
                         deviceDrivers_.addAll(other.deviceDrivers_);
@@ -15342,7 +16150,7 @@ public final class ContextOuterClass {
                     if (!other.deviceEndpoints_.isEmpty()) {
                         if (deviceEndpoints_.isEmpty()) {
                             deviceEndpoints_ = other.deviceEndpoints_;
-                            bitField0_ = (bitField0_ & ~0x00000040);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureDeviceEndpointsIsMutable();
                             deviceEndpoints_.addAll(other.deviceEndpoints_);
@@ -15355,7 +16163,7 @@ public final class ContextOuterClass {
                             deviceEndpointsBuilder_.dispose();
                             deviceEndpointsBuilder_ = null;
                             deviceEndpoints_ = other.deviceEndpoints_;
-                            bitField0_ = (bitField0_ & ~0x00000040);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             deviceEndpointsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceEndpointsFieldBuilder() : null;
                         } else {
                             deviceEndpointsBuilder_.addAllMessages(other.deviceEndpoints_);
@@ -15366,7 +16174,7 @@ public final class ContextOuterClass {
                     if (!other.components_.isEmpty()) {
                         if (components_.isEmpty()) {
                             components_ = other.components_;
-                            bitField0_ = (bitField0_ & ~0x00000080);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureComponentsIsMutable();
                             components_.addAll(other.components_);
@@ -15379,7 +16187,7 @@ public final class ContextOuterClass {
                             componentsBuilder_.dispose();
                             componentsBuilder_ = null;
                             components_ = other.components_;
-                            bitField0_ = (bitField0_ & ~0x00000080);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             componentsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getComponentsFieldBuilder() : null;
                         } else {
                             componentsBuilder_.addAllMessages(other.components_);
@@ -15389,7 +16197,7 @@ public final class ContextOuterClass {
                 if (other.hasControllerId()) {
                     mergeControllerId(other.getControllerId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -15401,122 +16209,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Device parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    deviceType_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    input.readMessage(getDeviceConfigFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            case 40:
-                                {
-                                    deviceOperationalStatus_ = input.readEnum();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 40
-                            case 48:
-                                {
-                                    int tmpRaw = input.readEnum();
-                                    ensureDeviceDriversIsMutable();
-                                    deviceDrivers_.add(tmpRaw);
-                                    break;
-                                }
-                            // case 48
-                            case 50:
-                                {
-                                    int length = input.readRawVarint32();
-                                    int oldLimit = input.pushLimit(length);
-                                    while (input.getBytesUntilLimit() > 0) {
-                                        int tmpRaw = input.readEnum();
-                                        ensureDeviceDriversIsMutable();
-                                        deviceDrivers_.add(tmpRaw);
-                                    }
-                                    input.popLimit(oldLimit);
-                                    break;
-                                }
-                            // case 50
-                            case 58:
-                                {
-                                    context.ContextOuterClass.EndPoint m = input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry);
-                                    if (deviceEndpointsBuilder_ == null) {
-                                        ensureDeviceEndpointsIsMutable();
-                                        deviceEndpoints_.add(m);
-                                    } else {
-                                        deviceEndpointsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 58
-                            case 66:
-                                {
-                                    context.ContextOuterClass.Component m = input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry);
-                                    if (componentsBuilder_ == null) {
-                                        ensureComponentsIsMutable();
-                                        components_.add(m);
-                                    } else {
-                                        componentsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 66
-                            case 74:
-                                {
-                                    input.readMessage(getControllerIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000100;
-                                    break;
-                                }
-                            // case 74
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Device) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -15531,7 +16234,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceId field is set.
              */
             public boolean hasDeviceId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return deviceIdBuilder_ != null || deviceId_ != null;
             }
 
             /**
@@ -15555,11 +16258,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceId_ = value;
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -15569,11 +16271,10 @@ public final class ContextOuterClass {
             public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (deviceIdBuilder_ == null) {
                     deviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -15582,16 +16283,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                 if (deviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
-                        getDeviceIdBuilder().mergeFrom(value);
+                    if (deviceId_ != null) {
+                        deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
                     } else {
                         deviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -15599,13 +16299,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId device_id = 1;</code>
              */
             public Builder clearDeviceId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                    onChanged();
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -15613,7 +16313,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId device_id = 1;</code>
              */
             public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDeviceIdFieldBuilder().getBuilder();
             }
@@ -15683,7 +16382,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -15694,7 +16392,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -15710,7 +16407,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -15758,7 +16454,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 deviceType_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -15769,7 +16464,6 @@ public final class ContextOuterClass {
              */
             public Builder clearDeviceType() {
                 deviceType_ = getDefaultInstance().getDeviceType();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -15785,7 +16479,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 deviceType_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -15799,7 +16492,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceConfig field is set.
              */
             public boolean hasDeviceConfig() {
-                return ((bitField0_ & 0x00000008) != 0);
+                return deviceConfigBuilder_ != null || deviceConfig_ != null;
             }
 
             /**
@@ -15823,11 +16516,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceConfig_ = value;
+                    onChanged();
                 } else {
                     deviceConfigBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -15837,11 +16529,10 @@ public final class ContextOuterClass {
             public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
                 if (deviceConfigBuilder_ == null) {
                     deviceConfig_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceConfigBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -15850,16 +16541,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
                 if (deviceConfigBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0) && deviceConfig_ != null && deviceConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) {
-                        getDeviceConfigBuilder().mergeFrom(value);
+                    if (deviceConfig_ != null) {
+                        deviceConfig_ = context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
                     } else {
                         deviceConfig_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceConfigBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -15867,13 +16557,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceConfig device_config = 4;</code>
              */
             public Builder clearDeviceConfig() {
-                bitField0_ = (bitField0_ & ~0x00000008);
-                deviceConfig_ = null;
-                if (deviceConfigBuilder_ != null) {
-                    deviceConfigBuilder_.dispose();
+                if (deviceConfigBuilder_ == null) {
+                    deviceConfig_ = null;
+                    onChanged();
+                } else {
+                    deviceConfig_ = null;
                     deviceConfigBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -15881,7 +16571,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceConfig device_config = 4;</code>
              */
             public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return getDeviceConfigFieldBuilder().getBuilder();
             }
@@ -15926,7 +16615,6 @@ public final class ContextOuterClass {
              */
             public Builder setDeviceOperationalStatusValue(int value) {
                 deviceOperationalStatus_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -15937,7 +16625,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
-                context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.forNumber(deviceOperationalStatus_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_);
                 return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
             }
 
@@ -15950,7 +16639,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000010;
                 deviceOperationalStatus_ = value.getNumber();
                 onChanged();
                 return this;
@@ -15961,7 +16649,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDeviceOperationalStatus() {
-                bitField0_ = (bitField0_ & ~0x00000010);
                 deviceOperationalStatus_ = 0;
                 onChanged();
                 return this;
@@ -15970,9 +16657,9 @@ public final class ContextOuterClass {
             private java.util.List<java.lang.Integer> deviceDrivers_ = java.util.Collections.emptyList();
 
             private void ensureDeviceDriversIsMutable() {
-                if (!((bitField0_ & 0x00000020) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>(deviceDrivers_);
-                    bitField0_ |= 0x00000020;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -16052,7 +16739,7 @@ public final class ContextOuterClass {
              */
             public Builder clearDeviceDrivers() {
                 deviceDrivers_ = java.util.Collections.emptyList();
-                bitField0_ = (bitField0_ & ~0x00000020);
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -16076,8 +16763,8 @@ public final class ContextOuterClass {
 
             /**
              * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-             * @param index The index to set the value at.
-             * @param value The enum numeric value on the wire for deviceDrivers to set.
+             * @param index The index of the value to return.
+             * @return The enum numeric value on the wire of deviceDrivers at the given index.
              * @return This builder for chaining.
              */
             public Builder setDeviceDriversValue(int index, int value) {
@@ -16116,9 +16803,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_ = java.util.Collections.emptyList();
 
             private void ensureDeviceEndpointsIsMutable() {
-                if (!((bitField0_ & 0x00000040) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>(deviceEndpoints_);
-                    bitField0_ |= 0x00000040;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -16270,7 +16957,7 @@ public final class ContextOuterClass {
             public Builder clearDeviceEndpoints() {
                 if (deviceEndpointsBuilder_ == null) {
                     deviceEndpoints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000040);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     deviceEndpointsBuilder_.clear();
@@ -16344,7 +17031,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder> getDeviceEndpointsFieldBuilder() {
                 if (deviceEndpointsBuilder_ == null) {
-                    deviceEndpointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder>(deviceEndpoints_, ((bitField0_ & 0x00000040) != 0), getParentForChildren(), isClean());
+                    deviceEndpointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder>(deviceEndpoints_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     deviceEndpoints_ = null;
                 }
                 return deviceEndpointsBuilder_;
@@ -16353,9 +17040,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.Component> components_ = java.util.Collections.emptyList();
 
             private void ensureComponentsIsMutable() {
-                if (!((bitField0_ & 0x00000080) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     components_ = new java.util.ArrayList<context.ContextOuterClass.Component>(components_);
-                    bitField0_ |= 0x00000080;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -16551,7 +17238,7 @@ public final class ContextOuterClass {
             public Builder clearComponents() {
                 if (componentsBuilder_ == null) {
                     components_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000080);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     componentsBuilder_.clear();
@@ -16653,7 +17340,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> getComponentsFieldBuilder() {
                 if (componentsBuilder_ == null) {
-                    componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder>(components_, ((bitField0_ & 0x00000080) != 0), getParentForChildren(), isClean());
+                    componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder>(components_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     components_ = null;
                 }
                 return componentsBuilder_;
@@ -16672,7 +17359,7 @@ public final class ContextOuterClass {
              * @return Whether the controllerId field is set.
              */
             public boolean hasControllerId() {
-                return ((bitField0_ & 0x00000100) != 0);
+                return controllerIdBuilder_ != null || controllerId_ != null;
             }
 
             /**
@@ -16704,11 +17391,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     controllerId_ = value;
+                    onChanged();
                 } else {
                     controllerIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -16722,11 +17408,10 @@ public final class ContextOuterClass {
             public Builder setControllerId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (controllerIdBuilder_ == null) {
                     controllerId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     controllerIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -16739,16 +17424,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeControllerId(context.ContextOuterClass.DeviceId value) {
                 if (controllerIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000100) != 0) && controllerId_ != null && controllerId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
-                        getControllerIdBuilder().mergeFrom(value);
+                    if (controllerId_ != null) {
+                        controllerId_ = context.ContextOuterClass.DeviceId.newBuilder(controllerId_).mergeFrom(value).buildPartial();
                     } else {
                         controllerId_ = value;
                     }
+                    onChanged();
                 } else {
                     controllerIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -16760,13 +17444,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId controller_id = 9;</code>
              */
             public Builder clearControllerId() {
-                bitField0_ = (bitField0_ & ~0x00000100);
-                controllerId_ = null;
-                if (controllerIdBuilder_ != null) {
-                    controllerIdBuilder_.dispose();
+                if (controllerIdBuilder_ == null) {
+                    controllerId_ = null;
+                    onChanged();
+                } else {
+                    controllerId_ = null;
                     controllerIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -16778,7 +17462,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId controller_id = 9;</code>
              */
             public context.ContextOuterClass.DeviceId.Builder getControllerIdBuilder() {
-                bitField0_ |= 0x00000100;
                 onChanged();
                 return getControllerIdFieldBuilder().getBuilder();
             }
@@ -16840,17 +17523,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Device parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Device(input, extensionRegistry);
             }
         };
 
@@ -16953,9 +17626,7 @@ public final class ContextOuterClass {
          *
          * <code>map&lt;string, string&gt; attributes = 4;</code>
          */
-        /* nullable */
-        java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
-        java.lang.String defaultValue);
+        java.lang.String getAttributesOrDefault(java.lang.String key, java.lang.String defaultValue);
 
         /**
          * <pre>
@@ -17008,6 +17679,86 @@ public final class ContextOuterClass {
             return new Component();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Component(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (componentUuid_ != null) {
+                                    subBuilder = componentUuid_.toBuilder();
+                                }
+                                componentUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(componentUuid_);
+                                    componentUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                type_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    attributes_ = com.google.protobuf.MapField.newMapField(AttributesDefaultEntryHolder.defaultEntry);
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                com.google.protobuf.MapEntry<java.lang.String, java.lang.String> attributes__ = input.readMessage(AttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
+                                attributes_.getMutableMap().put(attributes__.getKey(), attributes__.getValue());
+                                break;
+                            }
+                        case 42:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                parent_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Component_descriptor;
         }
@@ -17055,13 +17806,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder() {
-            return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
+            return getComponentUuid();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -17098,8 +17848,7 @@ public final class ContextOuterClass {
 
         public static final int TYPE_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object type_ = "";
+        private volatile java.lang.Object type_;
 
         /**
          * <code>string type = 3;</code>
@@ -17141,7 +17890,6 @@ public final class ContextOuterClass {
             static final com.google.protobuf.MapEntry<java.lang.String, java.lang.String> defaultEntry = com.google.protobuf.MapEntry.<java.lang.String, java.lang.String>newDefaultInstance(context.ContextOuterClass.internal_static_context_Component_AttributesEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.STRING, "");
         }
 
-        @SuppressWarnings("serial")
         private com.google.protobuf.MapField<java.lang.String, java.lang.String> attributes_;
 
         private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetAttributes() {
@@ -17165,7 +17913,7 @@ public final class ContextOuterClass {
         @java.lang.Override
         public boolean containsAttributes(java.lang.String key) {
             if (key == null) {
-                throw new NullPointerException("map key");
+                throw new java.lang.NullPointerException();
             }
             return internalGetAttributes().getMap().containsKey(key);
         }
@@ -17199,11 +17947,9 @@ public final class ContextOuterClass {
          * <code>map&lt;string, string&gt; attributes = 4;</code>
          */
         @java.lang.Override
-        public /* nullable */
-        java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
-        java.lang.String defaultValue) {
+        public java.lang.String getAttributesOrDefault(java.lang.String key, java.lang.String defaultValue) {
             if (key == null) {
-                throw new NullPointerException("map key");
+                throw new java.lang.NullPointerException();
             }
             java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
             return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -17219,7 +17965,7 @@ public final class ContextOuterClass {
         @java.lang.Override
         public java.lang.String getAttributesOrThrow(java.lang.String key) {
             if (key == null) {
-                throw new NullPointerException("map key");
+                throw new java.lang.NullPointerException();
             }
             java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
             if (!map.containsKey(key)) {
@@ -17230,8 +17976,7 @@ public final class ContextOuterClass {
 
         public static final int PARENT_FIELD_NUMBER = 5;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object parent_ = "";
+        private volatile java.lang.Object parent_;
 
         /**
          * <code>string parent = 5;</code>
@@ -17284,17 +18029,17 @@ public final class ContextOuterClass {
             if (componentUuid_ != null) {
                 output.writeMessage(1, getComponentUuid());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
+            if (!getTypeBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, type_);
             }
             com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetAttributes(), AttributesDefaultEntryHolder.defaultEntry, 4);
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
+            if (!getParentBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 5, parent_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -17306,20 +18051,20 @@ public final class ContextOuterClass {
             if (componentUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getComponentUuid());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
+            if (!getTypeBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, type_);
             }
             for (java.util.Map.Entry<java.lang.String, java.lang.String> entry : internalGetAttributes().getMap().entrySet()) {
                 com.google.protobuf.MapEntry<java.lang.String, java.lang.String> attributes__ = AttributesDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build();
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, attributes__);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
+            if (!getParentBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, parent_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -17347,7 +18092,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getParent().equals(other.getParent()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -17373,7 +18118,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + PARENT_FIELD_NUMBER;
             hash = (53 * hash) + getParent().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -17491,19 +18236,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Component.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                componentUuid_ = null;
-                if (componentUuidBuilder_ != null) {
-                    componentUuidBuilder_.dispose();
+                if (componentUuidBuilder_ == null) {
+                    componentUuid_ = null;
+                } else {
+                    componentUuid_ = null;
                     componentUuidBuilder_ = null;
                 }
                 name_ = "";
@@ -17535,31 +18287,49 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Component buildPartial() {
                 context.ContextOuterClass.Component result = new context.ContextOuterClass.Component(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (componentUuidBuilder_ == null) {
+                    result.componentUuid_ = componentUuid_;
+                } else {
+                    result.componentUuid_ = componentUuidBuilder_.build();
                 }
+                result.name_ = name_;
+                result.type_ = type_;
+                result.attributes_ = internalGetAttributes();
+                result.attributes_.makeImmutable();
+                result.parent_ = parent_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Component result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.componentUuid_ = componentUuidBuilder_ == null ? componentUuid_ : componentUuidBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.type_ = type_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.attributes_ = internalGetAttributes();
-                    result.attributes_.makeImmutable();
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.parent_ = parent_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -17580,22 +18350,18 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getType().isEmpty()) {
                     type_ = other.type_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 internalGetMutableAttributes().mergeFrom(other.internalGetAttributes());
-                bitField0_ |= 0x00000008;
                 if (!other.getParent().isEmpty()) {
                     parent_ = other.parent_;
-                    bitField0_ |= 0x00000010;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -17607,71 +18373,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Component parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getComponentUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    type_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    com.google.protobuf.MapEntry<java.lang.String, java.lang.String> attributes__ = input.readMessage(AttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
-                                    internalGetMutableAttributes().getMutableMap().put(attributes__.getKey(), attributes__.getValue());
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    parent_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Component) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -17686,7 +18398,7 @@ public final class ContextOuterClass {
              * @return Whether the componentUuid field is set.
              */
             public boolean hasComponentUuid() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return componentUuidBuilder_ != null || componentUuid_ != null;
             }
 
             /**
@@ -17710,11 +18422,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     componentUuid_ = value;
+                    onChanged();
                 } else {
                     componentUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17724,11 +18435,10 @@ public final class ContextOuterClass {
             public Builder setComponentUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (componentUuidBuilder_ == null) {
                     componentUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     componentUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17737,16 +18447,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeComponentUuid(context.ContextOuterClass.Uuid value) {
                 if (componentUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && componentUuid_ != null && componentUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getComponentUuidBuilder().mergeFrom(value);
+                    if (componentUuid_ != null) {
+                        componentUuid_ = context.ContextOuterClass.Uuid.newBuilder(componentUuid_).mergeFrom(value).buildPartial();
                     } else {
                         componentUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     componentUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17754,13 +18463,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid component_uuid = 1;</code>
              */
             public Builder clearComponentUuid() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                componentUuid_ = null;
-                if (componentUuidBuilder_ != null) {
-                    componentUuidBuilder_.dispose();
+                if (componentUuidBuilder_ == null) {
+                    componentUuid_ = null;
+                    onChanged();
+                } else {
+                    componentUuid_ = null;
                     componentUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -17768,7 +18477,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid component_uuid = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getComponentUuidBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getComponentUuidFieldBuilder().getBuilder();
             }
@@ -17838,7 +18546,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -17849,7 +18556,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -17865,7 +18571,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -17913,7 +18618,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 type_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -17924,7 +18628,6 @@ public final class ContextOuterClass {
              */
             public Builder clearType() {
                 type_ = getDefaultInstance().getType();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -17940,7 +18643,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 type_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -17955,14 +18657,14 @@ public final class ContextOuterClass {
             }
 
             private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetMutableAttributes() {
+                onChanged();
+                ;
                 if (attributes_ == null) {
                     attributes_ = com.google.protobuf.MapField.newMapField(AttributesDefaultEntryHolder.defaultEntry);
                 }
                 if (!attributes_.isMutable()) {
                     attributes_ = attributes_.copy();
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return attributes_;
             }
 
@@ -17980,7 +18682,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public boolean containsAttributes(java.lang.String key) {
                 if (key == null) {
-                    throw new NullPointerException("map key");
+                    throw new java.lang.NullPointerException();
                 }
                 return internalGetAttributes().getMap().containsKey(key);
             }
@@ -18014,11 +18716,9 @@ public final class ContextOuterClass {
              * <code>map&lt;string, string&gt; attributes = 4;</code>
              */
             @java.lang.Override
-            public /* nullable */
-            java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
-            java.lang.String defaultValue) {
+            public java.lang.String getAttributesOrDefault(java.lang.String key, java.lang.String defaultValue) {
                 if (key == null) {
-                    throw new NullPointerException("map key");
+                    throw new java.lang.NullPointerException();
                 }
                 java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
                 return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -18034,7 +18734,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public java.lang.String getAttributesOrThrow(java.lang.String key) {
                 if (key == null) {
-                    throw new NullPointerException("map key");
+                    throw new java.lang.NullPointerException();
                 }
                 java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
                 if (!map.containsKey(key)) {
@@ -18044,7 +18744,6 @@ public final class ContextOuterClass {
             }
 
             public Builder clearAttributes() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 internalGetMutableAttributes().getMutableMap().clear();
                 return this;
             }
@@ -18058,7 +18757,7 @@ public final class ContextOuterClass {
              */
             public Builder removeAttributes(java.lang.String key) {
                 if (key == null) {
-                    throw new NullPointerException("map key");
+                    throw new java.lang.NullPointerException();
                 }
                 internalGetMutableAttributes().getMutableMap().remove(key);
                 return this;
@@ -18069,7 +18768,6 @@ public final class ContextOuterClass {
              */
             @java.lang.Deprecated
             public java.util.Map<java.lang.String, java.lang.String> getMutableAttributes() {
-                bitField0_ |= 0x00000008;
                 return internalGetMutableAttributes().getMutableMap();
             }
 
@@ -18082,13 +18780,12 @@ public final class ContextOuterClass {
              */
             public Builder putAttributes(java.lang.String key, java.lang.String value) {
                 if (key == null) {
-                    throw new NullPointerException("map key");
+                    throw new java.lang.NullPointerException();
                 }
                 if (value == null) {
-                    throw new NullPointerException("map value");
+                    throw new java.lang.NullPointerException();
                 }
                 internalGetMutableAttributes().getMutableMap().put(key, value);
-                bitField0_ |= 0x00000008;
                 return this;
             }
 
@@ -18101,7 +18798,6 @@ public final class ContextOuterClass {
              */
             public Builder putAllAttributes(java.util.Map<java.lang.String, java.lang.String> values) {
                 internalGetMutableAttributes().getMutableMap().putAll(values);
-                bitField0_ |= 0x00000008;
                 return this;
             }
 
@@ -18148,7 +18844,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 parent_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -18159,7 +18854,6 @@ public final class ContextOuterClass {
              */
             public Builder clearParent() {
                 parent_ = getDefaultInstance().getParent();
-                bitField0_ = (bitField0_ & ~0x00000010);
                 onChanged();
                 return this;
             }
@@ -18175,7 +18869,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 parent_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -18207,17 +18900,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Component parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Component(input, extensionRegistry);
             }
         };
 
@@ -18288,6 +18971,57 @@ public final class ContextOuterClass {
             return new DeviceConfig();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                configRules_.add(input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    configRules_ = java.util.Collections.unmodifiableList(configRules_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
         }
@@ -18299,7 +19033,6 @@ public final class ContextOuterClass {
 
         public static final int CONFIG_RULES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
 
         /**
@@ -18360,7 +19093,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 output.writeMessage(1, configRules_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -18372,7 +19105,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -18388,7 +19121,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.DeviceConfig other = (context.ContextOuterClass.DeviceConfig) obj;
             if (!getConfigRulesList().equals(other.getConfigRulesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -18404,7 +19137,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                 hash = (53 * hash) + getConfigRulesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -18498,23 +19231,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceConfig.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getConfigRulesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (configRulesBuilder_ == null) {
                     configRules_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    configRules_ = null;
                     configRulesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -18540,15 +19279,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceConfig buildPartial() {
                 context.ContextOuterClass.DeviceConfig result = new context.ContextOuterClass.DeviceConfig(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceConfig result) {
+                int from_bitField0_ = bitField0_;
                 if (configRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         configRules_ = java.util.Collections.unmodifiableList(configRules_);
@@ -18558,10 +19289,38 @@ public final class ContextOuterClass {
                 } else {
                     result.configRules_ = configRulesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.DeviceConfig result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -18601,7 +19360,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -18613,47 +19372,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.DeviceConfig parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
-                                    if (configRulesBuilder_ == null) {
-                                        ensureConfigRulesIsMutable();
-                                        configRules_.add(m);
-                                    } else {
-                                        configRulesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.DeviceConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -18923,17 +19652,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceConfig(input, extensionRegistry);
             }
         };
 
@@ -19004,6 +19723,57 @@ public final class ContextOuterClass {
             return new DeviceIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                deviceIds_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
         }
@@ -19015,7 +19785,6 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
 
         /**
@@ -19076,7 +19845,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < deviceIds_.size(); i++) {
                 output.writeMessage(1, deviceIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -19088,7 +19857,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < deviceIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, deviceIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -19104,7 +19873,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.DeviceIdList other = (context.ContextOuterClass.DeviceIdList) obj;
             if (!getDeviceIdsList().equals(other.getDeviceIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -19120,7 +19889,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -19214,23 +19983,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDeviceIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    deviceIds_ = null;
                     deviceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -19256,15 +20031,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceIdList buildPartial() {
                 context.ContextOuterClass.DeviceIdList result = new context.ContextOuterClass.DeviceIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (deviceIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
@@ -19274,10 +20041,38 @@ public final class ContextOuterClass {
                 } else {
                     result.deviceIds_ = deviceIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.DeviceIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -19317,7 +20112,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -19329,47 +20124,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.DeviceIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-                                    if (deviceIdsBuilder_ == null) {
-                                        ensureDeviceIdsIsMutable();
-                                        deviceIds_.add(m);
-                                    } else {
-                                        deviceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.DeviceIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -19639,17 +20404,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceIdList(input, extensionRegistry);
             }
         };
 
@@ -19720,6 +20475,57 @@ public final class ContextOuterClass {
             return new DeviceList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                devices_.add(input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    devices_ = java.util.Collections.unmodifiableList(devices_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
         }
@@ -19731,7 +20537,6 @@ public final class ContextOuterClass {
 
         public static final int DEVICES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Device> devices_;
 
         /**
@@ -19792,7 +20597,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < devices_.size(); i++) {
                 output.writeMessage(1, devices_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -19804,7 +20609,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < devices_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, devices_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -19820,7 +20625,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.DeviceList other = (context.ContextOuterClass.DeviceList) obj;
             if (!getDevicesList().equals(other.getDevicesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -19836,7 +20641,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICES_FIELD_NUMBER;
                 hash = (53 * hash) + getDevicesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -19930,23 +20735,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDevicesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (devicesBuilder_ == null) {
                     devices_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    devices_ = null;
                     devicesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -19972,15 +20783,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceList buildPartial() {
                 context.ContextOuterClass.DeviceList result = new context.ContextOuterClass.DeviceList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceList result) {
+                int from_bitField0_ = bitField0_;
                 if (devicesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         devices_ = java.util.Collections.unmodifiableList(devices_);
@@ -19990,10 +20793,38 @@ public final class ContextOuterClass {
                 } else {
                     result.devices_ = devicesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.DeviceList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -20033,7 +20864,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -20045,47 +20876,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.DeviceList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Device m = input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry);
-                                    if (devicesBuilder_ == null) {
-                                        ensureDevicesIsMutable();
-                                        devices_.add(m);
-                                    } else {
-                                        devicesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.DeviceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -20355,17 +21156,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceList(input, extensionRegistry);
             }
         };
 
@@ -20445,6 +21236,72 @@ public final class ContextOuterClass {
             return new DeviceFilter();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceFilter(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.DeviceIdList.Builder subBuilder = null;
+                                if (deviceIds_ != null) {
+                                    subBuilder = deviceIds_.toBuilder();
+                                }
+                                deviceIds_ = input.readMessage(context.ContextOuterClass.DeviceIdList.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceIds_);
+                                    deviceIds_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                includeEndpoints_ = input.readBool();
+                                break;
+                            }
+                        case 24:
+                            {
+                                includeConfigRules_ = input.readBool();
+                                break;
+                            }
+                        case 32:
+                            {
+                                includeComponents_ = input.readBool();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceFilter_descriptor;
         }
@@ -20481,12 +21338,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdListOrBuilder getDeviceIdsOrBuilder() {
-            return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
+            return getDeviceIds();
         }
 
         public static final int INCLUDE_ENDPOINTS_FIELD_NUMBER = 2;
 
-        private boolean includeEndpoints_ = false;
+        private boolean includeEndpoints_;
 
         /**
          * <code>bool include_endpoints = 2;</code>
@@ -20499,7 +21356,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 3;
 
-        private boolean includeConfigRules_ = false;
+        private boolean includeConfigRules_;
 
         /**
          * <code>bool include_config_rules = 3;</code>
@@ -20512,7 +21369,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_COMPONENTS_FIELD_NUMBER = 4;
 
-        private boolean includeComponents_ = false;
+        private boolean includeComponents_;
 
         /**
          * <code>bool include_components = 4;</code>
@@ -20550,7 +21407,7 @@ public final class ContextOuterClass {
             if (includeComponents_ != false) {
                 output.writeBool(4, includeComponents_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -20571,7 +21428,7 @@ public final class ContextOuterClass {
             if (includeComponents_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeComponents_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -20597,7 +21454,7 @@ public final class ContextOuterClass {
                 return false;
             if (getIncludeComponents() != other.getIncludeComponents())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -20619,7 +21476,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
             hash = (37 * hash) + INCLUDE_COMPONENTS_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeComponents());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -20713,19 +21570,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceFilter.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                deviceIds_ = null;
-                if (deviceIdsBuilder_ != null) {
-                    deviceIdsBuilder_.dispose();
+                if (deviceIdsBuilder_ == null) {
+                    deviceIds_ = null;
+                } else {
+                    deviceIds_ = null;
                     deviceIdsBuilder_ = null;
                 }
                 includeEndpoints_ = false;
@@ -20756,27 +21620,46 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceFilter buildPartial() {
                 context.ContextOuterClass.DeviceFilter result = new context.ContextOuterClass.DeviceFilter(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (deviceIdsBuilder_ == null) {
+                    result.deviceIds_ = deviceIds_;
+                } else {
+                    result.deviceIds_ = deviceIdsBuilder_.build();
                 }
+                result.includeEndpoints_ = includeEndpoints_;
+                result.includeConfigRules_ = includeConfigRules_;
+                result.includeComponents_ = includeComponents_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.DeviceFilter result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.deviceIds_ = deviceIdsBuilder_ == null ? deviceIds_ : deviceIdsBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.includeEndpoints_ = includeEndpoints_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.includeConfigRules_ = includeConfigRules_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.includeComponents_ = includeComponents_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -20804,7 +21687,7 @@ public final class ContextOuterClass {
                 if (other.getIncludeComponents() != false) {
                     setIncludeComponents(other.getIncludeComponents());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -20816,68 +21699,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.DeviceFilter parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getDeviceIdsFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    includeEndpoints_ = input.readBool();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 24:
-                                {
-                                    includeConfigRules_ = input.readBool();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    includeComponents_ = input.readBool();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.DeviceFilter) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.DeviceIdList deviceIds_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceIdList, context.ContextOuterClass.DeviceIdList.Builder, context.ContextOuterClass.DeviceIdListOrBuilder> deviceIdsBuilder_;
@@ -20887,7 +21722,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceIds field is set.
              */
             public boolean hasDeviceIds() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return deviceIdsBuilder_ != null || deviceIds_ != null;
             }
 
             /**
@@ -20911,11 +21746,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceIds_ = value;
+                    onChanged();
                 } else {
                     deviceIdsBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -20925,11 +21759,10 @@ public final class ContextOuterClass {
             public Builder setDeviceIds(context.ContextOuterClass.DeviceIdList.Builder builderForValue) {
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceIdsBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -20938,16 +21771,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceIds(context.ContextOuterClass.DeviceIdList value) {
                 if (deviceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && deviceIds_ != null && deviceIds_ != context.ContextOuterClass.DeviceIdList.getDefaultInstance()) {
-                        getDeviceIdsBuilder().mergeFrom(value);
+                    if (deviceIds_ != null) {
+                        deviceIds_ = context.ContextOuterClass.DeviceIdList.newBuilder(deviceIds_).mergeFrom(value).buildPartial();
                     } else {
                         deviceIds_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceIdsBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -20955,13 +21787,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceIdList device_ids = 1;</code>
              */
             public Builder clearDeviceIds() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                deviceIds_ = null;
-                if (deviceIdsBuilder_ != null) {
-                    deviceIdsBuilder_.dispose();
+                if (deviceIdsBuilder_ == null) {
+                    deviceIds_ = null;
+                    onChanged();
+                } else {
+                    deviceIds_ = null;
                     deviceIdsBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -20969,7 +21801,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceIdList device_ids = 1;</code>
              */
             public context.ContextOuterClass.DeviceIdList.Builder getDeviceIdsBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDeviceIdsFieldBuilder().getBuilder();
             }
@@ -21014,7 +21845,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeEndpoints(boolean value) {
                 includeEndpoints_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -21024,7 +21854,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeEndpoints() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 includeEndpoints_ = false;
                 onChanged();
                 return this;
@@ -21048,7 +21877,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConfigRules(boolean value) {
                 includeConfigRules_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -21058,7 +21886,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConfigRules() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 includeConfigRules_ = false;
                 onChanged();
                 return this;
@@ -21082,7 +21909,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeComponents(boolean value) {
                 includeComponents_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -21092,7 +21918,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeComponents() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 includeComponents_ = false;
                 onChanged();
                 return this;
@@ -21125,17 +21950,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceFilter(input, extensionRegistry);
             }
         };
 
@@ -21231,6 +22046,83 @@ public final class ContextOuterClass {
             return new DeviceEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+                                if (deviceId_ != null) {
+                                    subBuilder = deviceId_.toBuilder();
+                                }
+                                deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceId_);
+                                    deviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 26:
+                            {
+                                context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
+                                if (deviceConfig_ != null) {
+                                    subBuilder = deviceConfig_.toBuilder();
+                                }
+                                deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceConfig_);
+                                    deviceConfig_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
         }
@@ -21267,7 +22159,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int DEVICE_ID_FIELD_NUMBER = 2;
@@ -21297,7 +22189,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+            return getDeviceId();
         }
 
         public static final int DEVICE_CONFIG_FIELD_NUMBER = 3;
@@ -21327,7 +22219,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
-            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
+            return getDeviceConfig();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -21354,7 +22246,7 @@ public final class ContextOuterClass {
             if (deviceConfig_ != null) {
                 output.writeMessage(3, getDeviceConfig());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -21372,7 +22264,7 @@ public final class ContextOuterClass {
             if (deviceConfig_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getDeviceConfig());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -21404,7 +22296,7 @@ public final class ContextOuterClass {
                 if (!getDeviceConfig().equals(other.getDeviceConfig()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -21428,7 +22320,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICE_CONFIG_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceConfig().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -21522,29 +22414,38 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                deviceConfig_ = null;
-                if (deviceConfigBuilder_ != null) {
-                    deviceConfigBuilder_.dispose();
+                if (deviceConfigBuilder_ == null) {
+                    deviceConfig_ = null;
+                } else {
+                    deviceConfig_ = null;
                     deviceConfigBuilder_ = null;
                 }
                 return this;
@@ -21572,24 +22473,53 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceEvent buildPartial() {
                 context.ContextOuterClass.DeviceEvent result = new context.ContextOuterClass.DeviceEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (deviceIdBuilder_ == null) {
+                    result.deviceId_ = deviceId_;
+                } else {
+                    result.deviceId_ = deviceIdBuilder_.build();
+                }
+                if (deviceConfigBuilder_ == null) {
+                    result.deviceConfig_ = deviceConfig_;
+                } else {
+                    result.deviceConfig_ = deviceConfigBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.DeviceEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.deviceConfig_ = deviceConfigBuilder_ == null ? deviceConfig_ : deviceConfigBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -21614,7 +22544,7 @@ public final class ContextOuterClass {
                 if (other.hasDeviceConfig()) {
                     mergeDeviceConfig(other.getDeviceConfig());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -21626,61 +22556,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.DeviceEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getDeviceConfigFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.DeviceEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -21690,7 +22579,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -21714,11 +22603,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -21728,11 +22616,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -21741,16 +22628,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -21758,13 +22644,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -21772,7 +22658,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -21808,7 +22693,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceId field is set.
              */
             public boolean hasDeviceId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return deviceIdBuilder_ != null || deviceId_ != null;
             }
 
             /**
@@ -21832,11 +22717,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceId_ = value;
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -21846,11 +22730,10 @@ public final class ContextOuterClass {
             public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (deviceIdBuilder_ == null) {
                     deviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -21859,16 +22742,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                 if (deviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
-                        getDeviceIdBuilder().mergeFrom(value);
+                    if (deviceId_ != null) {
+                        deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
                     } else {
                         deviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -21876,13 +22758,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId device_id = 2;</code>
              */
             public Builder clearDeviceId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                    onChanged();
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -21890,7 +22772,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId device_id = 2;</code>
              */
             public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getDeviceIdFieldBuilder().getBuilder();
             }
@@ -21926,7 +22807,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceConfig field is set.
              */
             public boolean hasDeviceConfig() {
-                return ((bitField0_ & 0x00000004) != 0);
+                return deviceConfigBuilder_ != null || deviceConfig_ != null;
             }
 
             /**
@@ -21950,11 +22831,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceConfig_ = value;
+                    onChanged();
                 } else {
                     deviceConfigBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -21964,11 +22844,10 @@ public final class ContextOuterClass {
             public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
                 if (deviceConfigBuilder_ == null) {
                     deviceConfig_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceConfigBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -21977,16 +22856,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
                 if (deviceConfigBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0) && deviceConfig_ != null && deviceConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) {
-                        getDeviceConfigBuilder().mergeFrom(value);
+                    if (deviceConfig_ != null) {
+                        deviceConfig_ = context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
                     } else {
                         deviceConfig_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceConfigBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -21994,13 +22872,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceConfig device_config = 3;</code>
              */
             public Builder clearDeviceConfig() {
-                bitField0_ = (bitField0_ & ~0x00000004);
-                deviceConfig_ = null;
-                if (deviceConfigBuilder_ != null) {
-                    deviceConfigBuilder_.dispose();
+                if (deviceConfigBuilder_ == null) {
+                    deviceConfig_ = null;
+                    onChanged();
+                } else {
+                    deviceConfig_ = null;
                     deviceConfigBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -22008,7 +22886,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceConfig device_config = 3;</code>
              */
             public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return getDeviceConfigFieldBuilder().getBuilder();
             }
@@ -22062,17 +22939,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceEvent(input, extensionRegistry);
             }
         };
 
@@ -22138,6 +23005,57 @@ public final class ContextOuterClass {
             return new LinkId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private LinkId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (linkUuid_ != null) {
+                                    subBuilder = linkUuid_.toBuilder();
+                                }
+                                linkUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(linkUuid_);
+                                    linkUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
         }
@@ -22174,7 +23092,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
-            return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
+            return getLinkUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -22195,7 +23113,7 @@ public final class ContextOuterClass {
             if (linkUuid_ != null) {
                 output.writeMessage(1, getLinkUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -22207,7 +23125,7 @@ public final class ContextOuterClass {
             if (linkUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getLinkUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -22227,7 +23145,7 @@ public final class ContextOuterClass {
                 if (!getLinkUuid().equals(other.getLinkUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -22243,7 +23161,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -22341,19 +23259,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                linkUuid_ = null;
-                if (linkUuidBuilder_ != null) {
-                    linkUuidBuilder_.dispose();
+                if (linkUuidBuilder_ == null) {
+                    linkUuid_ = null;
+                } else {
+                    linkUuid_ = null;
                     linkUuidBuilder_ = null;
                 }
                 return this;
@@ -22381,18 +23306,43 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkId buildPartial() {
                 context.ContextOuterClass.LinkId result = new context.ContextOuterClass.LinkId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (linkUuidBuilder_ == null) {
+                    result.linkUuid_ = linkUuid_;
+                } else {
+                    result.linkUuid_ = linkUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.LinkId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.linkUuid_ = linkUuidBuilder_ == null ? linkUuid_ : linkUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -22411,7 +23361,7 @@ public final class ContextOuterClass {
                 if (other.hasLinkUuid()) {
                     mergeLinkUuid(other.getLinkUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -22423,47 +23373,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.LinkId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getLinkUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.LinkId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid linkUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> linkUuidBuilder_;
@@ -22473,7 +23396,7 @@ public final class ContextOuterClass {
              * @return Whether the linkUuid field is set.
              */
             public boolean hasLinkUuid() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return linkUuidBuilder_ != null || linkUuid_ != null;
             }
 
             /**
@@ -22497,11 +23420,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     linkUuid_ = value;
+                    onChanged();
                 } else {
                     linkUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -22511,11 +23433,10 @@ public final class ContextOuterClass {
             public Builder setLinkUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (linkUuidBuilder_ == null) {
                     linkUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     linkUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -22524,16 +23445,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeLinkUuid(context.ContextOuterClass.Uuid value) {
                 if (linkUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && linkUuid_ != null && linkUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getLinkUuidBuilder().mergeFrom(value);
+                    if (linkUuid_ != null) {
+                        linkUuid_ = context.ContextOuterClass.Uuid.newBuilder(linkUuid_).mergeFrom(value).buildPartial();
                     } else {
                         linkUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     linkUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -22541,13 +23461,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid link_uuid = 1;</code>
              */
             public Builder clearLinkUuid() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                linkUuid_ = null;
-                if (linkUuidBuilder_ != null) {
-                    linkUuidBuilder_.dispose();
+                if (linkUuidBuilder_ == null) {
+                    linkUuid_ = null;
+                    onChanged();
+                } else {
+                    linkUuid_ = null;
                     linkUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -22555,7 +23475,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid link_uuid = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getLinkUuidBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getLinkUuidFieldBuilder().getBuilder();
             }
@@ -22609,17 +23528,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new LinkId(input, extensionRegistry);
             }
         };
 
@@ -22676,6 +23585,54 @@ public final class ContextOuterClass {
             return new LinkAttributes();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private LinkAttributes(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 13:
+                            {
+                                totalCapacityGbps_ = input.readFloat();
+                                break;
+                            }
+                        case 21:
+                            {
+                                usedCapacityGbps_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
         }
@@ -22687,7 +23644,7 @@ public final class ContextOuterClass {
 
         public static final int TOTAL_CAPACITY_GBPS_FIELD_NUMBER = 1;
 
-        private float totalCapacityGbps_ = 0F;
+        private float totalCapacityGbps_;
 
         /**
          * <code>float total_capacity_gbps = 1;</code>
@@ -22700,7 +23657,7 @@ public final class ContextOuterClass {
 
         public static final int USED_CAPACITY_GBPS_FIELD_NUMBER = 2;
 
-        private float usedCapacityGbps_ = 0F;
+        private float usedCapacityGbps_;
 
         /**
          * <code>float used_capacity_gbps = 2;</code>
@@ -22726,13 +23683,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (java.lang.Float.floatToRawIntBits(totalCapacityGbps_) != 0) {
+            if (totalCapacityGbps_ != 0F) {
                 output.writeFloat(1, totalCapacityGbps_);
             }
-            if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) {
+            if (usedCapacityGbps_ != 0F) {
                 output.writeFloat(2, usedCapacityGbps_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -22741,13 +23698,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (java.lang.Float.floatToRawIntBits(totalCapacityGbps_) != 0) {
+            if (totalCapacityGbps_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, totalCapacityGbps_);
             }
-            if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) {
+            if (usedCapacityGbps_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, usedCapacityGbps_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -22765,7 +23722,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getUsedCapacityGbps()) != java.lang.Float.floatToIntBits(other.getUsedCapacityGbps()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -22781,7 +23738,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getTotalCapacityGbps());
             hash = (37 * hash) + USED_CAPACITY_GBPS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getUsedCapacityGbps());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -22875,16 +23832,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkAttributes.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 totalCapacityGbps_ = 0F;
                 usedCapacityGbps_ = 0F;
                 return this;
@@ -22912,21 +23875,40 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkAttributes buildPartial() {
                 context.ContextOuterClass.LinkAttributes result = new context.ContextOuterClass.LinkAttributes(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.totalCapacityGbps_ = totalCapacityGbps_;
+                result.usedCapacityGbps_ = usedCapacityGbps_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.LinkAttributes result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.totalCapacityGbps_ = totalCapacityGbps_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.usedCapacityGbps_ = usedCapacityGbps_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -22948,7 +23930,7 @@ public final class ContextOuterClass {
                 if (other.getUsedCapacityGbps() != 0F) {
                     setUsedCapacityGbps(other.getUsedCapacityGbps());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -22960,54 +23942,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.LinkAttributes parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 13:
-                                {
-                                    totalCapacityGbps_ = input.readFloat();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 13
-                            case 21:
-                                {
-                                    usedCapacityGbps_ = input.readFloat();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 21
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.LinkAttributes) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private float totalCapacityGbps_;
 
             /**
@@ -23026,7 +23974,6 @@ public final class ContextOuterClass {
              */
             public Builder setTotalCapacityGbps(float value) {
                 totalCapacityGbps_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -23036,7 +23983,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTotalCapacityGbps() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 totalCapacityGbps_ = 0F;
                 onChanged();
                 return this;
@@ -23060,7 +24006,6 @@ public final class ContextOuterClass {
              */
             public Builder setUsedCapacityGbps(float value) {
                 usedCapacityGbps_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -23070,7 +24015,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearUsedCapacityGbps() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 usedCapacityGbps_ = 0F;
                 onChanged();
                 return this;
@@ -23103,17 +24047,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkAttributes parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new LinkAttributes(input, extensionRegistry);
             }
         };
 
@@ -23231,6 +24165,89 @@ public final class ContextOuterClass {
             return new Link();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Link(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.LinkId.Builder subBuilder = null;
+                                if (linkId_ != null) {
+                                    subBuilder = linkId_.toBuilder();
+                                }
+                                linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(linkId_);
+                                    linkId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                linkEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                context.ContextOuterClass.LinkAttributes.Builder subBuilder = null;
+                                if (attributes_ != null) {
+                                    subBuilder = attributes_.toBuilder();
+                                }
+                                attributes_ = input.readMessage(context.ContextOuterClass.LinkAttributes.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(attributes_);
+                                    attributes_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Link_descriptor;
         }
@@ -23267,13 +24284,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+            return getLinkId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -23310,7 +24326,6 @@ public final class ContextOuterClass {
 
         public static final int LINK_ENDPOINT_IDS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_;
 
         /**
@@ -23380,7 +24395,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
-            return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
+            return getAttributes();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -23401,7 +24416,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 output.writeMessage(1, getLinkId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < linkEndpointIds_.size(); i++) {
@@ -23410,7 +24425,7 @@ public final class ContextOuterClass {
             if (attributes_ != null) {
                 output.writeMessage(4, getAttributes());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -23422,7 +24437,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getLinkId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < linkEndpointIds_.size(); i++) {
@@ -23431,7 +24446,7 @@ public final class ContextOuterClass {
             if (attributes_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getAttributes());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -23461,7 +24476,7 @@ public final class ContextOuterClass {
                 if (!getAttributes().equals(other.getAttributes()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -23487,7 +24502,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
                 hash = (53 * hash) + getAttributes().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -23581,32 +24596,40 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Link.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getLinkEndpointIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                linkId_ = null;
-                if (linkIdBuilder_ != null) {
-                    linkIdBuilder_.dispose();
+                if (linkIdBuilder_ == null) {
+                    linkId_ = null;
+                } else {
+                    linkId_ = null;
                     linkIdBuilder_ = null;
                 }
                 name_ = "";
                 if (linkEndpointIdsBuilder_ == null) {
                     linkEndpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    linkEndpointIds_ = null;
                     linkEndpointIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
-                attributes_ = null;
-                if (attributesBuilder_ != null) {
-                    attributesBuilder_.dispose();
+                if (attributesBuilder_ == null) {
+                    attributes_ = null;
+                } else {
+                    attributes_ = null;
                     attributesBuilder_ = null;
                 }
                 return this;
@@ -23634,37 +24657,59 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Link buildPartial() {
                 context.ContextOuterClass.Link result = new context.ContextOuterClass.Link(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (linkIdBuilder_ == null) {
+                    result.linkId_ = linkId_;
+                } else {
+                    result.linkId_ = linkIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Link result) {
+                result.name_ = name_;
                 if (linkEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.linkEndpointIds_ = linkEndpointIds_;
                 } else {
                     result.linkEndpointIds_ = linkEndpointIdsBuilder_.build();
                 }
+                if (attributesBuilder_ == null) {
+                    result.attributes_ = attributes_;
+                } else {
+                    result.attributes_ = attributesBuilder_.build();
+                }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Link result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.attributes_ = attributesBuilder_ == null ? attributes_ : attributesBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -23685,14 +24730,13 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (linkEndpointIdsBuilder_ == null) {
                     if (!other.linkEndpointIds_.isEmpty()) {
                         if (linkEndpointIds_.isEmpty()) {
                             linkEndpointIds_ = other.linkEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureLinkEndpointIdsIsMutable();
                             linkEndpointIds_.addAll(other.linkEndpointIds_);
@@ -23705,7 +24749,7 @@ public final class ContextOuterClass {
                             linkEndpointIdsBuilder_.dispose();
                             linkEndpointIdsBuilder_ = null;
                             linkEndpointIds_ = other.linkEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             linkEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkEndpointIdsFieldBuilder() : null;
                         } else {
                             linkEndpointIdsBuilder_.addAllMessages(other.linkEndpointIds_);
@@ -23715,7 +24759,7 @@ public final class ContextOuterClass {
                 if (other.hasAttributes()) {
                     mergeAttributes(other.getAttributes());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -23727,68 +24771,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Link parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                    if (linkEndpointIdsBuilder_ == null) {
-                                        ensureLinkEndpointIdsIsMutable();
-                                        linkEndpointIds_.add(m);
-                                    } else {
-                                        linkEndpointIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    input.readMessage(getAttributesFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Link) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -23803,7 +24796,7 @@ public final class ContextOuterClass {
              * @return Whether the linkId field is set.
              */
             public boolean hasLinkId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return linkIdBuilder_ != null || linkId_ != null;
             }
 
             /**
@@ -23827,11 +24820,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     linkId_ = value;
+                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -23841,11 +24833,10 @@ public final class ContextOuterClass {
             public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
                 if (linkIdBuilder_ == null) {
                     linkId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -23854,16 +24845,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
                 if (linkIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
-                        getLinkIdBuilder().mergeFrom(value);
+                    if (linkId_ != null) {
+                        linkId_ = context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
                     } else {
                         linkId_ = value;
                     }
+                    onChanged();
                 } else {
                     linkIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -23871,13 +24861,13 @@ public final class ContextOuterClass {
              * <code>.context.LinkId link_id = 1;</code>
              */
             public Builder clearLinkId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                linkId_ = null;
-                if (linkIdBuilder_ != null) {
-                    linkIdBuilder_.dispose();
+                if (linkIdBuilder_ == null) {
+                    linkId_ = null;
+                    onChanged();
+                } else {
+                    linkId_ = null;
                     linkIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -23885,7 +24875,6 @@ public final class ContextOuterClass {
              * <code>.context.LinkId link_id = 1;</code>
              */
             public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getLinkIdFieldBuilder().getBuilder();
             }
@@ -23955,7 +24944,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -23966,7 +24954,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -23982,7 +24969,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -23990,9 +24976,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensureLinkEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(linkEndpointIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -24144,7 +25130,7 @@ public final class ContextOuterClass {
             public Builder clearLinkEndpointIds() {
                 if (linkEndpointIdsBuilder_ == null) {
                     linkEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     linkEndpointIdsBuilder_.clear();
@@ -24218,7 +25204,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsFieldBuilder() {
                 if (linkEndpointIdsBuilder_ == null) {
-                    linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(linkEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(linkEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     linkEndpointIds_ = null;
                 }
                 return linkEndpointIdsBuilder_;
@@ -24233,7 +25219,7 @@ public final class ContextOuterClass {
              * @return Whether the attributes field is set.
              */
             public boolean hasAttributes() {
-                return ((bitField0_ & 0x00000008) != 0);
+                return attributesBuilder_ != null || attributes_ != null;
             }
 
             /**
@@ -24257,11 +25243,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     attributes_ = value;
+                    onChanged();
                 } else {
                     attributesBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -24271,11 +25256,10 @@ public final class ContextOuterClass {
             public Builder setAttributes(context.ContextOuterClass.LinkAttributes.Builder builderForValue) {
                 if (attributesBuilder_ == null) {
                     attributes_ = builderForValue.build();
+                    onChanged();
                 } else {
                     attributesBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -24284,16 +25268,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeAttributes(context.ContextOuterClass.LinkAttributes value) {
                 if (attributesBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0) && attributes_ != null && attributes_ != context.ContextOuterClass.LinkAttributes.getDefaultInstance()) {
-                        getAttributesBuilder().mergeFrom(value);
+                    if (attributes_ != null) {
+                        attributes_ = context.ContextOuterClass.LinkAttributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
                     } else {
                         attributes_ = value;
                     }
+                    onChanged();
                 } else {
                     attributesBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -24301,13 +25284,13 @@ public final class ContextOuterClass {
              * <code>.context.LinkAttributes attributes = 4;</code>
              */
             public Builder clearAttributes() {
-                bitField0_ = (bitField0_ & ~0x00000008);
-                attributes_ = null;
-                if (attributesBuilder_ != null) {
-                    attributesBuilder_.dispose();
+                if (attributesBuilder_ == null) {
+                    attributes_ = null;
+                    onChanged();
+                } else {
+                    attributes_ = null;
                     attributesBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -24315,7 +25298,6 @@ public final class ContextOuterClass {
              * <code>.context.LinkAttributes attributes = 4;</code>
              */
             public context.ContextOuterClass.LinkAttributes.Builder getAttributesBuilder() {
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return getAttributesFieldBuilder().getBuilder();
             }
@@ -24369,17 +25351,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Link parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Link(input, extensionRegistry);
             }
         };
 
@@ -24450,6 +25422,57 @@ public final class ContextOuterClass {
             return new LinkIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private LinkIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                linkIds_.add(input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
         }
@@ -24461,7 +25484,6 @@ public final class ContextOuterClass {
 
         public static final int LINK_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
 
         /**
@@ -24522,7 +25544,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 output.writeMessage(1, linkIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -24534,7 +25556,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, linkIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -24550,7 +25572,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.LinkIdList other = (context.ContextOuterClass.LinkIdList) obj;
             if (!getLinkIdsList().equals(other.getLinkIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -24566,7 +25588,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -24660,23 +25682,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getLinkIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    linkIds_ = null;
                     linkIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -24702,15 +25730,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkIdList buildPartial() {
                 context.ContextOuterClass.LinkIdList result = new context.ContextOuterClass.LinkIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.LinkIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (linkIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
@@ -24720,10 +25740,38 @@ public final class ContextOuterClass {
                 } else {
                     result.linkIds_ = linkIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.LinkIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -24763,7 +25811,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -24775,47 +25823,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.LinkIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-                                    if (linkIdsBuilder_ == null) {
-                                        ensureLinkIdsIsMutable();
-                                        linkIds_.add(m);
-                                    } else {
-                                        linkIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.LinkIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -25085,17 +26103,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new LinkIdList(input, extensionRegistry);
             }
         };
 
@@ -25166,6 +26174,57 @@ public final class ContextOuterClass {
             return new LinkList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private LinkList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    links_ = new java.util.ArrayList<context.ContextOuterClass.Link>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                links_.add(input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    links_ = java.util.Collections.unmodifiableList(links_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
         }
@@ -25177,7 +26236,6 @@ public final class ContextOuterClass {
 
         public static final int LINKS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Link> links_;
 
         /**
@@ -25238,7 +26296,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < links_.size(); i++) {
                 output.writeMessage(1, links_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -25250,7 +26308,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < links_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, links_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -25266,7 +26324,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.LinkList other = (context.ContextOuterClass.LinkList) obj;
             if (!getLinksList().equals(other.getLinksList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -25282,7 +26340,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINKS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinksList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -25376,23 +26434,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getLinksFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (linksBuilder_ == null) {
                     links_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    links_ = null;
                     linksBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -25418,15 +26482,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkList buildPartial() {
                 context.ContextOuterClass.LinkList result = new context.ContextOuterClass.LinkList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.LinkList result) {
+                int from_bitField0_ = bitField0_;
                 if (linksBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         links_ = java.util.Collections.unmodifiableList(links_);
@@ -25436,10 +26492,38 @@ public final class ContextOuterClass {
                 } else {
                     result.links_ = linksBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.LinkList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -25479,7 +26563,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -25491,47 +26575,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.LinkList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Link m = input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry);
-                                    if (linksBuilder_ == null) {
-                                        ensureLinksIsMutable();
-                                        links_.add(m);
-                                    } else {
-                                        linksBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.LinkList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -25801,17 +26855,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new LinkList(input, extensionRegistry);
             }
         };
 
@@ -25890,6 +26934,70 @@ public final class ContextOuterClass {
             return new LinkEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private LinkEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.LinkId.Builder subBuilder = null;
+                                if (linkId_ != null) {
+                                    subBuilder = linkId_.toBuilder();
+                                }
+                                linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(linkId_);
+                                    linkId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
         }
@@ -25926,7 +27034,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int LINK_ID_FIELD_NUMBER = 2;
@@ -25956,7 +27064,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+            return getLinkId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -25980,7 +27088,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 output.writeMessage(2, getLinkId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -25995,7 +27103,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getLinkId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -26021,7 +27129,7 @@ public final class ContextOuterClass {
                 if (!getLinkId().equals(other.getLinkId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -26041,7 +27149,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -26135,24 +27243,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                linkId_ = null;
-                if (linkIdBuilder_ != null) {
-                    linkIdBuilder_.dispose();
+                if (linkIdBuilder_ == null) {
+                    linkId_ = null;
+                } else {
+                    linkId_ = null;
                     linkIdBuilder_ = null;
                 }
                 return this;
@@ -26180,21 +27296,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkEvent buildPartial() {
                 context.ContextOuterClass.LinkEvent result = new context.ContextOuterClass.LinkEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (linkIdBuilder_ == null) {
+                    result.linkId_ = linkId_;
+                } else {
+                    result.linkId_ = linkIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.LinkEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -26216,7 +27359,7 @@ public final class ContextOuterClass {
                 if (other.hasLinkId()) {
                     mergeLinkId(other.getLinkId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -26228,54 +27371,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.LinkEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.LinkEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -26285,7 +27394,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -26309,11 +27418,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -26323,11 +27431,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -26336,16 +27443,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -26353,13 +27459,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -26367,7 +27473,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -26403,7 +27508,7 @@ public final class ContextOuterClass {
              * @return Whether the linkId field is set.
              */
             public boolean hasLinkId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return linkIdBuilder_ != null || linkId_ != null;
             }
 
             /**
@@ -26427,11 +27532,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     linkId_ = value;
+                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -26441,11 +27545,10 @@ public final class ContextOuterClass {
             public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
                 if (linkIdBuilder_ == null) {
                     linkId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -26454,16 +27557,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
                 if (linkIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
-                        getLinkIdBuilder().mergeFrom(value);
+                    if (linkId_ != null) {
+                        linkId_ = context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
                     } else {
                         linkId_ = value;
                     }
+                    onChanged();
                 } else {
                     linkIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -26471,13 +27573,13 @@ public final class ContextOuterClass {
              * <code>.context.LinkId link_id = 2;</code>
              */
             public Builder clearLinkId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                linkId_ = null;
-                if (linkIdBuilder_ != null) {
-                    linkIdBuilder_.dispose();
+                if (linkIdBuilder_ == null) {
+                    linkId_ = null;
+                    onChanged();
+                } else {
+                    linkId_ = null;
                     linkIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -26485,7 +27587,6 @@ public final class ContextOuterClass {
              * <code>.context.LinkId link_id = 2;</code>
              */
             public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getLinkIdFieldBuilder().getBuilder();
             }
@@ -26539,17 +27640,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new LinkEvent(input, extensionRegistry);
             }
         };
 
@@ -26632,6 +27723,70 @@ public final class ContextOuterClass {
             return new ServiceId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (serviceUuid_ != null) {
+                                    subBuilder = serviceUuid_.toBuilder();
+                                }
+                                serviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceUuid_);
+                                    serviceUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
         }
@@ -26668,7 +27823,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            return getContextId();
         }
 
         public static final int SERVICE_UUID_FIELD_NUMBER = 2;
@@ -26698,7 +27853,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
-            return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
+            return getServiceUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -26722,7 +27877,7 @@ public final class ContextOuterClass {
             if (serviceUuid_ != null) {
                 output.writeMessage(2, getServiceUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -26737,7 +27892,7 @@ public final class ContextOuterClass {
             if (serviceUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -26763,7 +27918,7 @@ public final class ContextOuterClass {
                 if (!getServiceUuid().equals(other.getServiceUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -26783,7 +27938,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICE_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getServiceUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -26881,24 +28036,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                serviceUuid_ = null;
-                if (serviceUuidBuilder_ != null) {
-                    serviceUuidBuilder_.dispose();
+                if (serviceUuidBuilder_ == null) {
+                    serviceUuid_ = null;
+                } else {
+                    serviceUuid_ = null;
                     serviceUuidBuilder_ = null;
                 }
                 return this;
@@ -26926,21 +28089,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceId buildPartial() {
                 context.ContextOuterClass.ServiceId result = new context.ContextOuterClass.ServiceId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
+                }
+                if (serviceUuidBuilder_ == null) {
+                    result.serviceUuid_ = serviceUuid_;
+                } else {
+                    result.serviceUuid_ = serviceUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.serviceUuid_ = serviceUuidBuilder_ == null ? serviceUuid_ : serviceUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -26962,7 +28152,7 @@ public final class ContextOuterClass {
                 if (other.hasServiceUuid()) {
                     mergeServiceUuid(other.getServiceUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -26974,54 +28164,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getServiceUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
@@ -27031,7 +28187,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return contextIdBuilder_ != null || contextId_ != null;
             }
 
             /**
@@ -27055,11 +28211,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -27069,11 +28224,10 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -27082,16 +28236,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
                     } else {
                         contextId_ = value;
                     }
+                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -27099,13 +28252,13 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -27113,7 +28266,6 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -27149,7 +28301,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceUuid field is set.
              */
             public boolean hasServiceUuid() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return serviceUuidBuilder_ != null || serviceUuid_ != null;
             }
 
             /**
@@ -27173,11 +28325,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceUuid_ = value;
+                    onChanged();
                 } else {
                     serviceUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -27187,11 +28338,10 @@ public final class ContextOuterClass {
             public Builder setServiceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (serviceUuidBuilder_ == null) {
                     serviceUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -27200,16 +28350,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceUuid(context.ContextOuterClass.Uuid value) {
                 if (serviceUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && serviceUuid_ != null && serviceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getServiceUuidBuilder().mergeFrom(value);
+                    if (serviceUuid_ != null) {
+                        serviceUuid_ = context.ContextOuterClass.Uuid.newBuilder(serviceUuid_).mergeFrom(value).buildPartial();
                     } else {
                         serviceUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -27217,13 +28366,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid service_uuid = 2;</code>
              */
             public Builder clearServiceUuid() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                serviceUuid_ = null;
-                if (serviceUuidBuilder_ != null) {
-                    serviceUuidBuilder_.dispose();
+                if (serviceUuidBuilder_ == null) {
+                    serviceUuid_ = null;
+                    onChanged();
+                } else {
+                    serviceUuid_ = null;
                     serviceUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -27231,7 +28380,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid service_uuid = 2;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getServiceUuidBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceUuidFieldBuilder().getBuilder();
             }
@@ -27285,17 +28433,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceId(input, extensionRegistry);
             }
         };
 
@@ -27486,6 +28624,133 @@ public final class ContextOuterClass {
             return new Service();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Service(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
+                                if (serviceId_ != null) {
+                                    subBuilder = serviceId_.toBuilder();
+                                }
+                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceId_);
+                                    serviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 24:
+                            {
+                                int rawValue = input.readEnum();
+                                serviceType_ = rawValue;
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                serviceEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 42:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                serviceConstraints_.add(input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 50:
+                            {
+                                context.ContextOuterClass.ServiceStatus.Builder subBuilder = null;
+                                if (serviceStatus_ != null) {
+                                    subBuilder = serviceStatus_.toBuilder();
+                                }
+                                serviceStatus_ = input.readMessage(context.ContextOuterClass.ServiceStatus.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceStatus_);
+                                    serviceStatus_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 58:
+                            {
+                                context.ContextOuterClass.ServiceConfig.Builder subBuilder = null;
+                                if (serviceConfig_ != null) {
+                                    subBuilder = serviceConfig_.toBuilder();
+                                }
+                                serviceConfig_ = input.readMessage(context.ContextOuterClass.ServiceConfig.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceConfig_);
+                                    serviceConfig_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 66:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (timestamp_ != null) {
+                                    subBuilder = timestamp_.toBuilder();
+                                }
+                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(timestamp_);
+                                    timestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Service_descriptor;
         }
@@ -27522,13 +28787,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+            return getServiceId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -27565,7 +28829,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_TYPE_FIELD_NUMBER = 3;
 
-        private int serviceType_ = 0;
+        private int serviceType_;
 
         /**
          * <code>.context.ServiceTypeEnum service_type = 3;</code>
@@ -27582,13 +28846,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
-            context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.forNumber(serviceType_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
             return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
         }
 
         public static final int SERVICE_ENDPOINT_IDS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_;
 
         /**
@@ -27633,7 +28897,6 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_CONSTRAINTS_FIELD_NUMBER = 5;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_;
 
         /**
@@ -27703,7 +28966,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
-            return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
+            return getServiceStatus();
         }
 
         public static final int SERVICE_CONFIG_FIELD_NUMBER = 7;
@@ -27733,7 +28996,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
-            return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
+            return getServiceConfig();
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 8;
@@ -27763,7 +29026,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+            return getTimestamp();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -27784,7 +29047,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 output.writeMessage(1, getServiceId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
@@ -27805,7 +29068,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 output.writeMessage(8, getTimestamp());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -27817,7 +29080,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getServiceId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
@@ -27838,7 +29101,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getTimestamp());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -27884,7 +29147,7 @@ public final class ContextOuterClass {
                 if (!getTimestamp().equals(other.getTimestamp()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -27924,7 +29187,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getTimestamp().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -28018,50 +29281,60 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Service.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getServiceEndpointIdsFieldBuilder();
+                    getServiceConstraintsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
                 name_ = "";
                 serviceType_ = 0;
                 if (serviceEndpointIdsBuilder_ == null) {
                     serviceEndpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    serviceEndpointIds_ = null;
                     serviceEndpointIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
                 if (serviceConstraintsBuilder_ == null) {
                     serviceConstraints_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    serviceConstraints_ = null;
                     serviceConstraintsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000010);
-                serviceStatus_ = null;
-                if (serviceStatusBuilder_ != null) {
-                    serviceStatusBuilder_.dispose();
+                if (serviceStatusBuilder_ == null) {
+                    serviceStatus_ = null;
+                } else {
+                    serviceStatus_ = null;
                     serviceStatusBuilder_ = null;
                 }
-                serviceConfig_ = null;
-                if (serviceConfigBuilder_ != null) {
-                    serviceConfigBuilder_.dispose();
+                if (serviceConfigBuilder_ == null) {
+                    serviceConfig_ = null;
+                } else {
+                    serviceConfig_ = null;
                     serviceConfigBuilder_ = null;
                 }
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
                 return this;
@@ -28089,55 +29362,79 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Service buildPartial() {
                 context.ContextOuterClass.Service result = new context.ContextOuterClass.Service(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (serviceIdBuilder_ == null) {
+                    result.serviceId_ = serviceId_;
+                } else {
+                    result.serviceId_ = serviceIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Service result) {
+                result.name_ = name_;
+                result.serviceType_ = serviceType_;
                 if (serviceEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.serviceEndpointIds_ = serviceEndpointIds_;
                 } else {
                     result.serviceEndpointIds_ = serviceEndpointIdsBuilder_.build();
                 }
                 if (serviceConstraintsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
-                        bitField0_ = (bitField0_ & ~0x00000010);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.serviceConstraints_ = serviceConstraints_;
                 } else {
                     result.serviceConstraints_ = serviceConstraintsBuilder_.build();
                 }
-            }
-
-            private void buildPartial0(context.ContextOuterClass.Service result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.serviceType_ = serviceType_;
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.serviceStatus_ = serviceStatusBuilder_ == null ? serviceStatus_ : serviceStatusBuilder_.build();
+                if (serviceStatusBuilder_ == null) {
+                    result.serviceStatus_ = serviceStatus_;
+                } else {
+                    result.serviceStatus_ = serviceStatusBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000040) != 0)) {
-                    result.serviceConfig_ = serviceConfigBuilder_ == null ? serviceConfig_ : serviceConfigBuilder_.build();
+                if (serviceConfigBuilder_ == null) {
+                    result.serviceConfig_ = serviceConfig_;
+                } else {
+                    result.serviceConfig_ = serviceConfigBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000080) != 0)) {
-                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                if (timestampBuilder_ == null) {
+                    result.timestamp_ = timestamp_;
+                } else {
+                    result.timestamp_ = timestampBuilder_.build();
                 }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -28158,7 +29455,6 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.serviceType_ != 0) {
@@ -28168,7 +29464,7 @@ public final class ContextOuterClass {
                     if (!other.serviceEndpointIds_.isEmpty()) {
                         if (serviceEndpointIds_.isEmpty()) {
                             serviceEndpointIds_ = other.serviceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureServiceEndpointIdsIsMutable();
                             serviceEndpointIds_.addAll(other.serviceEndpointIds_);
@@ -28181,7 +29477,7 @@ public final class ContextOuterClass {
                             serviceEndpointIdsBuilder_.dispose();
                             serviceEndpointIdsBuilder_ = null;
                             serviceEndpointIds_ = other.serviceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             serviceEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceEndpointIdsFieldBuilder() : null;
                         } else {
                             serviceEndpointIdsBuilder_.addAllMessages(other.serviceEndpointIds_);
@@ -28192,7 +29488,7 @@ public final class ContextOuterClass {
                     if (!other.serviceConstraints_.isEmpty()) {
                         if (serviceConstraints_.isEmpty()) {
                             serviceConstraints_ = other.serviceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureServiceConstraintsIsMutable();
                             serviceConstraints_.addAll(other.serviceConstraints_);
@@ -28205,7 +29501,7 @@ public final class ContextOuterClass {
                             serviceConstraintsBuilder_.dispose();
                             serviceConstraintsBuilder_ = null;
                             serviceConstraints_ = other.serviceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             serviceConstraintsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceConstraintsFieldBuilder() : null;
                         } else {
                             serviceConstraintsBuilder_.addAllMessages(other.serviceConstraints_);
@@ -28221,7 +29517,7 @@ public final class ContextOuterClass {
                 if (other.hasTimestamp()) {
                     mergeTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -28233,101 +29529,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Service parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 24:
-                                {
-                                    serviceType_ = input.readEnum();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 34:
-                                {
-                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                    if (serviceEndpointIdsBuilder_ == null) {
-                                        ensureServiceEndpointIdsIsMutable();
-                                        serviceEndpointIds_.add(m);
-                                    } else {
-                                        serviceEndpointIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    context.ContextOuterClass.Constraint m = input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry);
-                                    if (serviceConstraintsBuilder_ == null) {
-                                        ensureServiceConstraintsIsMutable();
-                                        serviceConstraints_.add(m);
-                                    } else {
-                                        serviceConstraintsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    input.readMessage(getServiceStatusFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 50
-                            case 58:
-                                {
-                                    input.readMessage(getServiceConfigFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000040;
-                                    break;
-                                }
-                            // case 58
-                            case 66:
-                                {
-                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000080;
-                                    break;
-                                }
-                            // case 66
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Service) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -28342,7 +29554,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return serviceIdBuilder_ != null || serviceId_ != null;
             }
 
             /**
@@ -28366,11 +29578,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -28380,11 +29591,10 @@ public final class ContextOuterClass {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -28393,16 +29603,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
-                        getServiceIdBuilder().mergeFrom(value);
+                    if (serviceId_ != null) {
+                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
                     } else {
                         serviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -28410,13 +29619,13 @@ public final class ContextOuterClass {
              * <code>.context.ServiceId service_id = 1;</code>
              */
             public Builder clearServiceId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                    onChanged();
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -28424,7 +29633,6 @@ public final class ContextOuterClass {
              * <code>.context.ServiceId service_id = 1;</code>
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -28494,7 +29702,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -28505,7 +29712,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -28521,7 +29727,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -28544,7 +29749,6 @@ public final class ContextOuterClass {
              */
             public Builder setServiceTypeValue(int value) {
                 serviceType_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -28555,7 +29759,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
-                context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.forNumber(serviceType_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
                 return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
             }
 
@@ -28568,7 +29773,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000004;
                 serviceType_ = value.getNumber();
                 onChanged();
                 return this;
@@ -28579,7 +29783,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearServiceType() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 serviceType_ = 0;
                 onChanged();
                 return this;
@@ -28588,9 +29791,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensureServiceEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(serviceEndpointIds_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -28742,7 +29945,7 @@ public final class ContextOuterClass {
             public Builder clearServiceEndpointIds() {
                 if (serviceEndpointIdsBuilder_ == null) {
                     serviceEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     serviceEndpointIdsBuilder_.clear();
@@ -28816,7 +30019,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getServiceEndpointIdsFieldBuilder() {
                 if (serviceEndpointIdsBuilder_ == null) {
-                    serviceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(serviceEndpointIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    serviceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(serviceEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     serviceEndpointIds_ = null;
                 }
                 return serviceEndpointIdsBuilder_;
@@ -28825,9 +30028,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_ = java.util.Collections.emptyList();
 
             private void ensureServiceConstraintsIsMutable() {
-                if (!((bitField0_ & 0x00000010) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(serviceConstraints_);
-                    bitField0_ |= 0x00000010;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -28979,7 +30182,7 @@ public final class ContextOuterClass {
             public Builder clearServiceConstraints() {
                 if (serviceConstraintsBuilder_ == null) {
                     serviceConstraints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000010);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     serviceConstraintsBuilder_.clear();
@@ -29053,7 +30256,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> getServiceConstraintsFieldBuilder() {
                 if (serviceConstraintsBuilder_ == null) {
-                    serviceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(serviceConstraints_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
+                    serviceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(serviceConstraints_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     serviceConstraints_ = null;
                 }
                 return serviceConstraintsBuilder_;
@@ -29068,7 +30271,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceStatus field is set.
              */
             public boolean hasServiceStatus() {
-                return ((bitField0_ & 0x00000020) != 0);
+                return serviceStatusBuilder_ != null || serviceStatus_ != null;
             }
 
             /**
@@ -29092,11 +30295,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceStatus_ = value;
+                    onChanged();
                 } else {
                     serviceStatusBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -29106,11 +30308,10 @@ public final class ContextOuterClass {
             public Builder setServiceStatus(context.ContextOuterClass.ServiceStatus.Builder builderForValue) {
                 if (serviceStatusBuilder_ == null) {
                     serviceStatus_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceStatusBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -29119,16 +30320,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceStatus(context.ContextOuterClass.ServiceStatus value) {
                 if (serviceStatusBuilder_ == null) {
-                    if (((bitField0_ & 0x00000020) != 0) && serviceStatus_ != null && serviceStatus_ != context.ContextOuterClass.ServiceStatus.getDefaultInstance()) {
-                        getServiceStatusBuilder().mergeFrom(value);
+                    if (serviceStatus_ != null) {
+                        serviceStatus_ = context.ContextOuterClass.ServiceStatus.newBuilder(serviceStatus_).mergeFrom(value).buildPartial();
                     } else {
                         serviceStatus_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceStatusBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -29136,13 +30336,13 @@ public final class ContextOuterClass {
              * <code>.context.ServiceStatus service_status = 6;</code>
              */
             public Builder clearServiceStatus() {
-                bitField0_ = (bitField0_ & ~0x00000020);
-                serviceStatus_ = null;
-                if (serviceStatusBuilder_ != null) {
-                    serviceStatusBuilder_.dispose();
+                if (serviceStatusBuilder_ == null) {
+                    serviceStatus_ = null;
+                    onChanged();
+                } else {
+                    serviceStatus_ = null;
                     serviceStatusBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -29150,7 +30350,6 @@ public final class ContextOuterClass {
              * <code>.context.ServiceStatus service_status = 6;</code>
              */
             public context.ContextOuterClass.ServiceStatus.Builder getServiceStatusBuilder() {
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return getServiceStatusFieldBuilder().getBuilder();
             }
@@ -29186,7 +30385,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceConfig field is set.
              */
             public boolean hasServiceConfig() {
-                return ((bitField0_ & 0x00000040) != 0);
+                return serviceConfigBuilder_ != null || serviceConfig_ != null;
             }
 
             /**
@@ -29210,11 +30409,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceConfig_ = value;
+                    onChanged();
                 } else {
                     serviceConfigBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -29224,11 +30422,10 @@ public final class ContextOuterClass {
             public Builder setServiceConfig(context.ContextOuterClass.ServiceConfig.Builder builderForValue) {
                 if (serviceConfigBuilder_ == null) {
                     serviceConfig_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceConfigBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -29237,16 +30434,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceConfig(context.ContextOuterClass.ServiceConfig value) {
                 if (serviceConfigBuilder_ == null) {
-                    if (((bitField0_ & 0x00000040) != 0) && serviceConfig_ != null && serviceConfig_ != context.ContextOuterClass.ServiceConfig.getDefaultInstance()) {
-                        getServiceConfigBuilder().mergeFrom(value);
+                    if (serviceConfig_ != null) {
+                        serviceConfig_ = context.ContextOuterClass.ServiceConfig.newBuilder(serviceConfig_).mergeFrom(value).buildPartial();
                     } else {
                         serviceConfig_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceConfigBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -29254,13 +30450,13 @@ public final class ContextOuterClass {
              * <code>.context.ServiceConfig service_config = 7;</code>
              */
             public Builder clearServiceConfig() {
-                bitField0_ = (bitField0_ & ~0x00000040);
-                serviceConfig_ = null;
-                if (serviceConfigBuilder_ != null) {
-                    serviceConfigBuilder_.dispose();
+                if (serviceConfigBuilder_ == null) {
+                    serviceConfig_ = null;
+                    onChanged();
+                } else {
+                    serviceConfig_ = null;
                     serviceConfigBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -29268,7 +30464,6 @@ public final class ContextOuterClass {
              * <code>.context.ServiceConfig service_config = 7;</code>
              */
             public context.ContextOuterClass.ServiceConfig.Builder getServiceConfigBuilder() {
-                bitField0_ |= 0x00000040;
                 onChanged();
                 return getServiceConfigFieldBuilder().getBuilder();
             }
@@ -29304,7 +30499,7 @@ public final class ContextOuterClass {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return ((bitField0_ & 0x00000080) != 0);
+                return timestampBuilder_ != null || timestamp_ != null;
             }
 
             /**
@@ -29328,11 +30523,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -29342,11 +30536,10 @@ public final class ContextOuterClass {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -29355,16 +30548,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000080) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getTimestampBuilder().mergeFrom(value);
+                    if (timestamp_ != null) {
+                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
                     } else {
                         timestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -29372,13 +30564,13 @@ public final class ContextOuterClass {
              * <code>.context.Timestamp timestamp = 8;</code>
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000080);
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                    onChanged();
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -29386,7 +30578,6 @@ public final class ContextOuterClass {
              * <code>.context.Timestamp timestamp = 8;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-                bitField0_ |= 0x00000080;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -29440,17 +30631,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Service parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Service(input, extensionRegistry);
             }
         };
 
@@ -29508,6 +30689,50 @@ public final class ContextOuterClass {
             return new ServiceStatus();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceStatus(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                serviceStatus_ = rawValue;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
         }
@@ -29519,7 +30744,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_STATUS_FIELD_NUMBER = 1;
 
-        private int serviceStatus_ = 0;
+        private int serviceStatus_;
 
         /**
          * <code>.context.ServiceStatusEnum service_status = 1;</code>
@@ -29536,7 +30761,8 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
-            context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.forNumber(serviceStatus_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
             return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
         }
 
@@ -29558,7 +30784,7 @@ public final class ContextOuterClass {
             if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
                 output.writeEnum(1, serviceStatus_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -29570,7 +30796,7 @@ public final class ContextOuterClass {
             if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, serviceStatus_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -29586,7 +30812,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceStatus other = (context.ContextOuterClass.ServiceStatus) obj;
             if (serviceStatus_ != other.serviceStatus_)
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -29600,7 +30826,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + SERVICE_STATUS_FIELD_NUMBER;
             hash = (53 * hash) + serviceStatus_;
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -29694,16 +30920,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceStatus.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 serviceStatus_ = 0;
                 return this;
             }
@@ -29730,18 +30962,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceStatus buildPartial() {
                 context.ContextOuterClass.ServiceStatus result = new context.ContextOuterClass.ServiceStatus(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.serviceStatus_ = serviceStatus_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceStatus result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.serviceStatus_ = serviceStatus_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -29760,7 +31013,7 @@ public final class ContextOuterClass {
                 if (other.serviceStatus_ != 0) {
                     setServiceStatusValue(other.getServiceStatusValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -29772,47 +31025,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceStatus parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    serviceStatus_ = input.readEnum();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceStatus) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int serviceStatus_ = 0;
 
             /**
@@ -29831,7 +31057,6 @@ public final class ContextOuterClass {
              */
             public Builder setServiceStatusValue(int value) {
                 serviceStatus_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -29842,7 +31067,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
-                context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.forNumber(serviceStatus_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
                 return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
             }
 
@@ -29855,7 +31081,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000001;
                 serviceStatus_ = value.getNumber();
                 onChanged();
                 return this;
@@ -29866,7 +31091,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearServiceStatus() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 serviceStatus_ = 0;
                 onChanged();
                 return this;
@@ -29899,17 +31123,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceStatus parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceStatus(input, extensionRegistry);
             }
         };
 
@@ -29980,6 +31194,57 @@ public final class ContextOuterClass {
             return new ServiceConfig();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                configRules_.add(input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    configRules_ = java.util.Collections.unmodifiableList(configRules_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
         }
@@ -29991,7 +31256,6 @@ public final class ContextOuterClass {
 
         public static final int CONFIG_RULES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
 
         /**
@@ -30052,7 +31316,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 output.writeMessage(1, configRules_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -30064,7 +31328,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -30080,7 +31344,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceConfig other = (context.ContextOuterClass.ServiceConfig) obj;
             if (!getConfigRulesList().equals(other.getConfigRulesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -30096,7 +31360,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                 hash = (53 * hash) + getConfigRulesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -30190,23 +31454,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceConfig.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getConfigRulesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (configRulesBuilder_ == null) {
                     configRules_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    configRules_ = null;
                     configRulesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -30232,15 +31502,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceConfig buildPartial() {
                 context.ContextOuterClass.ServiceConfig result = new context.ContextOuterClass.ServiceConfig(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceConfig result) {
+                int from_bitField0_ = bitField0_;
                 if (configRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         configRules_ = java.util.Collections.unmodifiableList(configRules_);
@@ -30250,10 +31512,38 @@ public final class ContextOuterClass {
                 } else {
                     result.configRules_ = configRulesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceConfig result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -30293,7 +31583,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -30305,47 +31595,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceConfig parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
-                                    if (configRulesBuilder_ == null) {
-                                        ensureConfigRulesIsMutable();
-                                        configRules_.add(m);
-                                    } else {
-                                        configRulesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -30615,17 +31875,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceConfig(input, extensionRegistry);
             }
         };
 
@@ -30696,6 +31946,57 @@ public final class ContextOuterClass {
             return new ServiceIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                serviceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
         }
@@ -30707,7 +32008,6 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;
 
         /**
@@ -30768,7 +32068,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < serviceIds_.size(); i++) {
                 output.writeMessage(1, serviceIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -30780,7 +32080,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < serviceIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, serviceIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -30796,7 +32096,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceIdList other = (context.ContextOuterClass.ServiceIdList) obj;
             if (!getServiceIdsList().equals(other.getServiceIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -30812,7 +32112,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getServiceIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -30906,23 +32206,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getServiceIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (serviceIdsBuilder_ == null) {
                     serviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    serviceIds_ = null;
                     serviceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -30948,15 +32254,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceIdList buildPartial() {
                 context.ContextOuterClass.ServiceIdList result = new context.ContextOuterClass.ServiceIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (serviceIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
@@ -30966,10 +32264,38 @@ public final class ContextOuterClass {
                 } else {
                     result.serviceIds_ = serviceIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -31009,7 +32335,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -31021,47 +32347,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                    if (serviceIdsBuilder_ == null) {
-                                        ensureServiceIdsIsMutable();
-                                        serviceIds_.add(m);
-                                    } else {
-                                        serviceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -31331,17 +32627,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceIdList(input, extensionRegistry);
             }
         };
 
@@ -31412,6 +32698,57 @@ public final class ContextOuterClass {
             return new ServiceList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    services_ = new java.util.ArrayList<context.ContextOuterClass.Service>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                services_.add(input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    services_ = java.util.Collections.unmodifiableList(services_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
         }
@@ -31423,7 +32760,6 @@ public final class ContextOuterClass {
 
         public static final int SERVICES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Service> services_;
 
         /**
@@ -31484,7 +32820,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < services_.size(); i++) {
                 output.writeMessage(1, services_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -31496,7 +32832,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < services_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, services_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -31512,7 +32848,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceList other = (context.ContextOuterClass.ServiceList) obj;
             if (!getServicesList().equals(other.getServicesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -31528,7 +32864,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICES_FIELD_NUMBER;
                 hash = (53 * hash) + getServicesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -31622,23 +32958,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getServicesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (servicesBuilder_ == null) {
                     services_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    services_ = null;
                     servicesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -31664,15 +33006,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceList buildPartial() {
                 context.ContextOuterClass.ServiceList result = new context.ContextOuterClass.ServiceList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceList result) {
+                int from_bitField0_ = bitField0_;
                 if (servicesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         services_ = java.util.Collections.unmodifiableList(services_);
@@ -31682,10 +33016,38 @@ public final class ContextOuterClass {
                 } else {
                     result.services_ = servicesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -31725,7 +33087,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -31737,47 +33099,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Service m = input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry);
-                                    if (servicesBuilder_ == null) {
-                                        ensureServicesIsMutable();
-                                        services_.add(m);
-                                    } else {
-                                        servicesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -32047,17 +33379,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceList(input, extensionRegistry);
             }
         };
 
@@ -32137,6 +33459,72 @@ public final class ContextOuterClass {
             return new ServiceFilter();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceFilter(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ServiceIdList.Builder subBuilder = null;
+                                if (serviceIds_ != null) {
+                                    subBuilder = serviceIds_.toBuilder();
+                                }
+                                serviceIds_ = input.readMessage(context.ContextOuterClass.ServiceIdList.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceIds_);
+                                    serviceIds_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                includeEndpointIds_ = input.readBool();
+                                break;
+                            }
+                        case 24:
+                            {
+                                includeConstraints_ = input.readBool();
+                                break;
+                            }
+                        case 32:
+                            {
+                                includeConfigRules_ = input.readBool();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
         }
@@ -32173,12 +33561,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder() {
-            return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
+            return getServiceIds();
         }
 
         public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
 
-        private boolean includeEndpointIds_ = false;
+        private boolean includeEndpointIds_;
 
         /**
          * <code>bool include_endpoint_ids = 2;</code>
@@ -32191,7 +33579,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;
 
-        private boolean includeConstraints_ = false;
+        private boolean includeConstraints_;
 
         /**
          * <code>bool include_constraints = 3;</code>
@@ -32204,7 +33592,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 4;
 
-        private boolean includeConfigRules_ = false;
+        private boolean includeConfigRules_;
 
         /**
          * <code>bool include_config_rules = 4;</code>
@@ -32242,7 +33630,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 output.writeBool(4, includeConfigRules_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -32263,7 +33651,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeConfigRules_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -32289,7 +33677,7 @@ public final class ContextOuterClass {
                 return false;
             if (getIncludeConfigRules() != other.getIncludeConfigRules())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -32311,7 +33699,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConstraints());
             hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -32405,19 +33793,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceFilter.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                serviceIds_ = null;
-                if (serviceIdsBuilder_ != null) {
-                    serviceIdsBuilder_.dispose();
+                if (serviceIdsBuilder_ == null) {
+                    serviceIds_ = null;
+                } else {
+                    serviceIds_ = null;
                     serviceIdsBuilder_ = null;
                 }
                 includeEndpointIds_ = false;
@@ -32448,27 +33843,46 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceFilter buildPartial() {
                 context.ContextOuterClass.ServiceFilter result = new context.ContextOuterClass.ServiceFilter(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (serviceIdsBuilder_ == null) {
+                    result.serviceIds_ = serviceIds_;
+                } else {
+                    result.serviceIds_ = serviceIdsBuilder_.build();
                 }
+                result.includeEndpointIds_ = includeEndpointIds_;
+                result.includeConstraints_ = includeConstraints_;
+                result.includeConfigRules_ = includeConfigRules_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceFilter result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.serviceIds_ = serviceIdsBuilder_ == null ? serviceIds_ : serviceIdsBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.includeEndpointIds_ = includeEndpointIds_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.includeConstraints_ = includeConstraints_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.includeConfigRules_ = includeConfigRules_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -32496,7 +33910,7 @@ public final class ContextOuterClass {
                 if (other.getIncludeConfigRules() != false) {
                     setIncludeConfigRules(other.getIncludeConfigRules());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -32508,68 +33922,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceFilter parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getServiceIdsFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    includeEndpointIds_ = input.readBool();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 24:
-                                {
-                                    includeConstraints_ = input.readBool();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    includeConfigRules_ = input.readBool();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceFilter) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.ServiceIdList serviceIds_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceIdList, context.ContextOuterClass.ServiceIdList.Builder, context.ContextOuterClass.ServiceIdListOrBuilder> serviceIdsBuilder_;
@@ -32579,7 +33945,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceIds field is set.
              */
             public boolean hasServiceIds() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return serviceIdsBuilder_ != null || serviceIds_ != null;
             }
 
             /**
@@ -32603,11 +33969,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceIds_ = value;
+                    onChanged();
                 } else {
                     serviceIdsBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -32617,11 +33982,10 @@ public final class ContextOuterClass {
             public Builder setServiceIds(context.ContextOuterClass.ServiceIdList.Builder builderForValue) {
                 if (serviceIdsBuilder_ == null) {
                     serviceIds_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceIdsBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -32630,16 +33994,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceIds(context.ContextOuterClass.ServiceIdList value) {
                 if (serviceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && serviceIds_ != null && serviceIds_ != context.ContextOuterClass.ServiceIdList.getDefaultInstance()) {
-                        getServiceIdsBuilder().mergeFrom(value);
+                    if (serviceIds_ != null) {
+                        serviceIds_ = context.ContextOuterClass.ServiceIdList.newBuilder(serviceIds_).mergeFrom(value).buildPartial();
                     } else {
                         serviceIds_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceIdsBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -32647,13 +34010,13 @@ public final class ContextOuterClass {
              * <code>.context.ServiceIdList service_ids = 1;</code>
              */
             public Builder clearServiceIds() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                serviceIds_ = null;
-                if (serviceIdsBuilder_ != null) {
-                    serviceIdsBuilder_.dispose();
+                if (serviceIdsBuilder_ == null) {
+                    serviceIds_ = null;
+                    onChanged();
+                } else {
+                    serviceIds_ = null;
                     serviceIdsBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -32661,7 +34024,6 @@ public final class ContextOuterClass {
              * <code>.context.ServiceIdList service_ids = 1;</code>
              */
             public context.ContextOuterClass.ServiceIdList.Builder getServiceIdsBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getServiceIdsFieldBuilder().getBuilder();
             }
@@ -32706,7 +34068,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeEndpointIds(boolean value) {
                 includeEndpointIds_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -32716,7 +34077,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeEndpointIds() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 includeEndpointIds_ = false;
                 onChanged();
                 return this;
@@ -32740,7 +34100,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConstraints(boolean value) {
                 includeConstraints_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -32750,7 +34109,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConstraints() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 includeConstraints_ = false;
                 onChanged();
                 return this;
@@ -32774,7 +34132,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConfigRules(boolean value) {
                 includeConfigRules_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -32784,7 +34141,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConfigRules() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 includeConfigRules_ = false;
                 onChanged();
                 return this;
@@ -32817,17 +34173,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceFilter(input, extensionRegistry);
             }
         };
 
@@ -32906,6 +34252,70 @@ public final class ContextOuterClass {
             return new ServiceEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
+                                if (serviceId_ != null) {
+                                    subBuilder = serviceId_.toBuilder();
+                                }
+                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceId_);
+                                    serviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
         }
@@ -32942,7 +34352,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int SERVICE_ID_FIELD_NUMBER = 2;
@@ -32972,7 +34382,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+            return getServiceId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -32996,7 +34406,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 output.writeMessage(2, getServiceId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -33011,7 +34421,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -33037,7 +34447,7 @@ public final class ContextOuterClass {
                 if (!getServiceId().equals(other.getServiceId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -33057,7 +34467,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getServiceId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -33151,24 +34561,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
                 return this;
@@ -33196,21 +34614,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceEvent buildPartial() {
                 context.ContextOuterClass.ServiceEvent result = new context.ContextOuterClass.ServiceEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (serviceIdBuilder_ == null) {
+                    result.serviceId_ = serviceId_;
+                } else {
+                    result.serviceId_ = serviceIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -33232,7 +34677,7 @@ public final class ContextOuterClass {
                 if (other.hasServiceId()) {
                     mergeServiceId(other.getServiceId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -33244,54 +34689,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -33301,7 +34712,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -33325,11 +34736,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -33339,11 +34749,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -33352,16 +34761,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -33369,13 +34777,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -33383,7 +34791,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -33419,7 +34826,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return serviceIdBuilder_ != null || serviceId_ != null;
             }
 
             /**
@@ -33443,11 +34850,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -33457,11 +34863,10 @@ public final class ContextOuterClass {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -33470,16 +34875,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
-                        getServiceIdBuilder().mergeFrom(value);
+                    if (serviceId_ != null) {
+                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
                     } else {
                         serviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -33487,13 +34891,13 @@ public final class ContextOuterClass {
              * <code>.context.ServiceId service_id = 2;</code>
              */
             public Builder clearServiceId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                    onChanged();
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -33501,7 +34905,6 @@ public final class ContextOuterClass {
              * <code>.context.ServiceId service_id = 2;</code>
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -33555,17 +34958,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceEvent(input, extensionRegistry);
             }
         };
 
@@ -33648,6 +35041,70 @@ public final class ContextOuterClass {
             return new SliceId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (sliceUuid_ != null) {
+                                    subBuilder = sliceUuid_.toBuilder();
+                                }
+                                sliceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceUuid_);
+                                    sliceUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
         }
@@ -33684,7 +35141,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            return getContextId();
         }
 
         public static final int SLICE_UUID_FIELD_NUMBER = 2;
@@ -33714,7 +35171,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
-            return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
+            return getSliceUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -33738,7 +35195,7 @@ public final class ContextOuterClass {
             if (sliceUuid_ != null) {
                 output.writeMessage(2, getSliceUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -33753,7 +35210,7 @@ public final class ContextOuterClass {
             if (sliceUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSliceUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -33779,7 +35236,7 @@ public final class ContextOuterClass {
                 if (!getSliceUuid().equals(other.getSliceUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -33799,7 +35256,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICE_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getSliceUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -33897,24 +35354,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                sliceUuid_ = null;
-                if (sliceUuidBuilder_ != null) {
-                    sliceUuidBuilder_.dispose();
+                if (sliceUuidBuilder_ == null) {
+                    sliceUuid_ = null;
+                } else {
+                    sliceUuid_ = null;
                     sliceUuidBuilder_ = null;
                 }
                 return this;
@@ -33942,21 +35407,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceId buildPartial() {
                 context.ContextOuterClass.SliceId result = new context.ContextOuterClass.SliceId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
+                }
+                if (sliceUuidBuilder_ == null) {
+                    result.sliceUuid_ = sliceUuid_;
+                } else {
+                    result.sliceUuid_ = sliceUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.sliceUuid_ = sliceUuidBuilder_ == null ? sliceUuid_ : sliceUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -33978,7 +35470,7 @@ public final class ContextOuterClass {
                 if (other.hasSliceUuid()) {
                     mergeSliceUuid(other.getSliceUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -33990,54 +35482,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getSliceUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
@@ -34047,7 +35505,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return contextIdBuilder_ != null || contextId_ != null;
             }
 
             /**
@@ -34071,11 +35529,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -34085,11 +35542,10 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -34098,16 +35554,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
                     } else {
                         contextId_ = value;
                     }
+                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -34115,13 +35570,13 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -34129,7 +35584,6 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -34165,7 +35619,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceUuid field is set.
              */
             public boolean hasSliceUuid() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return sliceUuidBuilder_ != null || sliceUuid_ != null;
             }
 
             /**
@@ -34189,11 +35643,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceUuid_ = value;
+                    onChanged();
                 } else {
                     sliceUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -34203,11 +35656,10 @@ public final class ContextOuterClass {
             public Builder setSliceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (sliceUuidBuilder_ == null) {
                     sliceUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -34216,16 +35668,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceUuid(context.ContextOuterClass.Uuid value) {
                 if (sliceUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && sliceUuid_ != null && sliceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getSliceUuidBuilder().mergeFrom(value);
+                    if (sliceUuid_ != null) {
+                        sliceUuid_ = context.ContextOuterClass.Uuid.newBuilder(sliceUuid_).mergeFrom(value).buildPartial();
                     } else {
                         sliceUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -34233,13 +35684,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid slice_uuid = 2;</code>
              */
             public Builder clearSliceUuid() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                sliceUuid_ = null;
-                if (sliceUuidBuilder_ != null) {
-                    sliceUuidBuilder_.dispose();
+                if (sliceUuidBuilder_ == null) {
+                    sliceUuid_ = null;
+                    onChanged();
+                } else {
+                    sliceUuid_ = null;
                     sliceUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -34247,7 +35698,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid slice_uuid = 2;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getSliceUuidBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getSliceUuidFieldBuilder().getBuilder();
             }
@@ -34301,17 +35751,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceId(input, extensionRegistry);
             }
         };
 
@@ -34558,6 +35998,164 @@ public final class ContextOuterClass {
             return new Slice();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Slice(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.SliceId.Builder subBuilder = null;
+                                if (sliceId_ != null) {
+                                    subBuilder = sliceId_.toBuilder();
+                                }
+                                sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceId_);
+                                    sliceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                sliceEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                sliceConstraints_.add(input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 42:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
+                                    sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
+                                    mutable_bitField0_ |= 0x00000004;
+                                }
+                                sliceServiceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 50:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000008) != 0)) {
+                                    sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
+                                    mutable_bitField0_ |= 0x00000008;
+                                }
+                                sliceSubsliceIds_.add(input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 58:
+                            {
+                                context.ContextOuterClass.SliceStatus.Builder subBuilder = null;
+                                if (sliceStatus_ != null) {
+                                    subBuilder = sliceStatus_.toBuilder();
+                                }
+                                sliceStatus_ = input.readMessage(context.ContextOuterClass.SliceStatus.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceStatus_);
+                                    sliceStatus_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 66:
+                            {
+                                context.ContextOuterClass.SliceConfig.Builder subBuilder = null;
+                                if (sliceConfig_ != null) {
+                                    subBuilder = sliceConfig_.toBuilder();
+                                }
+                                sliceConfig_ = input.readMessage(context.ContextOuterClass.SliceConfig.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceConfig_);
+                                    sliceConfig_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 74:
+                            {
+                                context.ContextOuterClass.SliceOwner.Builder subBuilder = null;
+                                if (sliceOwner_ != null) {
+                                    subBuilder = sliceOwner_.toBuilder();
+                                }
+                                sliceOwner_ = input.readMessage(context.ContextOuterClass.SliceOwner.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceOwner_);
+                                    sliceOwner_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 82:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (timestamp_ != null) {
+                                    subBuilder = timestamp_.toBuilder();
+                                }
+                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(timestamp_);
+                                    timestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
+                }
+                if (((mutable_bitField0_ & 0x00000004) != 0)) {
+                    sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000008) != 0)) {
+                    sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Slice_descriptor;
         }
@@ -34594,13 +36192,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+            return getSliceId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -34637,7 +36234,6 @@ public final class ContextOuterClass {
 
         public static final int SLICE_ENDPOINT_IDS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_;
 
         /**
@@ -34682,7 +36278,6 @@ public final class ContextOuterClass {
 
         public static final int SLICE_CONSTRAINTS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_;
 
         /**
@@ -34727,7 +36322,6 @@ public final class ContextOuterClass {
 
         public static final int SLICE_SERVICE_IDS_FIELD_NUMBER = 5;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_;
 
         /**
@@ -34772,7 +36366,6 @@ public final class ContextOuterClass {
 
         public static final int SLICE_SUBSLICE_IDS_FIELD_NUMBER = 6;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_;
 
         /**
@@ -34842,7 +36435,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
-            return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
+            return getSliceStatus();
         }
 
         public static final int SLICE_CONFIG_FIELD_NUMBER = 8;
@@ -34872,7 +36465,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
-            return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
+            return getSliceConfig();
         }
 
         public static final int SLICE_OWNER_FIELD_NUMBER = 9;
@@ -34902,7 +36495,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
-            return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
+            return getSliceOwner();
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 10;
@@ -34932,7 +36525,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+            return getTimestamp();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -34953,7 +36546,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 output.writeMessage(1, getSliceId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < sliceEndpointIds_.size(); i++) {
@@ -34980,7 +36573,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 output.writeMessage(10, getTimestamp());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -34992,7 +36585,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSliceId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < sliceEndpointIds_.size(); i++) {
@@ -35019,7 +36612,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getTimestamp());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -35073,7 +36666,7 @@ public final class ContextOuterClass {
                 if (!getTimestamp().equals(other.getTimestamp()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -35123,7 +36716,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getTimestamp().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -35217,68 +36810,79 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Slice.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getSliceEndpointIdsFieldBuilder();
+                    getSliceConstraintsFieldBuilder();
+                    getSliceServiceIdsFieldBuilder();
+                    getSliceSubsliceIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                sliceId_ = null;
-                if (sliceIdBuilder_ != null) {
-                    sliceIdBuilder_.dispose();
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = null;
+                } else {
+                    sliceId_ = null;
                     sliceIdBuilder_ = null;
                 }
                 name_ = "";
                 if (sliceEndpointIdsBuilder_ == null) {
                     sliceEndpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    sliceEndpointIds_ = null;
                     sliceEndpointIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 if (sliceConstraintsBuilder_ == null) {
                     sliceConstraints_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    sliceConstraints_ = null;
                     sliceConstraintsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
                 if (sliceServiceIdsBuilder_ == null) {
                     sliceServiceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
                 } else {
-                    sliceServiceIds_ = null;
                     sliceServiceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000010);
                 if (sliceSubsliceIdsBuilder_ == null) {
                     sliceSubsliceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000008);
                 } else {
-                    sliceSubsliceIds_ = null;
                     sliceSubsliceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000020);
-                sliceStatus_ = null;
-                if (sliceStatusBuilder_ != null) {
-                    sliceStatusBuilder_.dispose();
+                if (sliceStatusBuilder_ == null) {
+                    sliceStatus_ = null;
+                } else {
+                    sliceStatus_ = null;
                     sliceStatusBuilder_ = null;
                 }
-                sliceConfig_ = null;
-                if (sliceConfigBuilder_ != null) {
-                    sliceConfigBuilder_.dispose();
+                if (sliceConfigBuilder_ == null) {
+                    sliceConfig_ = null;
+                } else {
+                    sliceConfig_ = null;
                     sliceConfigBuilder_ = null;
                 }
-                sliceOwner_ = null;
-                if (sliceOwnerBuilder_ != null) {
-                    sliceOwnerBuilder_.dispose();
+                if (sliceOwnerBuilder_ == null) {
+                    sliceOwner_ = null;
+                } else {
+                    sliceOwner_ = null;
                     sliceOwnerBuilder_ = null;
                 }
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
                 return this;
@@ -35306,73 +36910,101 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Slice buildPartial() {
                 context.ContextOuterClass.Slice result = new context.ContextOuterClass.Slice(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (sliceIdBuilder_ == null) {
+                    result.sliceId_ = sliceId_;
+                } else {
+                    result.sliceId_ = sliceIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Slice result) {
+                result.name_ = name_;
                 if (sliceEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.sliceEndpointIds_ = sliceEndpointIds_;
                 } else {
                     result.sliceEndpointIds_ = sliceEndpointIdsBuilder_.build();
                 }
                 if (sliceConstraintsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.sliceConstraints_ = sliceConstraints_;
                 } else {
                     result.sliceConstraints_ = sliceConstraintsBuilder_.build();
                 }
                 if (sliceServiceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000010);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.sliceServiceIds_ = sliceServiceIds_;
                 } else {
                     result.sliceServiceIds_ = sliceServiceIdsBuilder_.build();
                 }
                 if (sliceSubsliceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000020) != 0)) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
                         sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000020);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     }
                     result.sliceSubsliceIds_ = sliceSubsliceIds_;
                 } else {
                     result.sliceSubsliceIds_ = sliceSubsliceIdsBuilder_.build();
                 }
-            }
-
-            private void buildPartial0(context.ContextOuterClass.Slice result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000040) != 0)) {
-                    result.sliceStatus_ = sliceStatusBuilder_ == null ? sliceStatus_ : sliceStatusBuilder_.build();
+                if (sliceStatusBuilder_ == null) {
+                    result.sliceStatus_ = sliceStatus_;
+                } else {
+                    result.sliceStatus_ = sliceStatusBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000080) != 0)) {
-                    result.sliceConfig_ = sliceConfigBuilder_ == null ? sliceConfig_ : sliceConfigBuilder_.build();
+                if (sliceConfigBuilder_ == null) {
+                    result.sliceConfig_ = sliceConfig_;
+                } else {
+                    result.sliceConfig_ = sliceConfigBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000100) != 0)) {
-                    result.sliceOwner_ = sliceOwnerBuilder_ == null ? sliceOwner_ : sliceOwnerBuilder_.build();
+                if (sliceOwnerBuilder_ == null) {
+                    result.sliceOwner_ = sliceOwner_;
+                } else {
+                    result.sliceOwner_ = sliceOwnerBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000200) != 0)) {
-                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                if (timestampBuilder_ == null) {
+                    result.timestamp_ = timestamp_;
+                } else {
+                    result.timestamp_ = timestampBuilder_.build();
                 }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -35393,14 +37025,13 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (sliceEndpointIdsBuilder_ == null) {
                     if (!other.sliceEndpointIds_.isEmpty()) {
                         if (sliceEndpointIds_.isEmpty()) {
                             sliceEndpointIds_ = other.sliceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureSliceEndpointIdsIsMutable();
                             sliceEndpointIds_.addAll(other.sliceEndpointIds_);
@@ -35413,7 +37044,7 @@ public final class ContextOuterClass {
                             sliceEndpointIdsBuilder_.dispose();
                             sliceEndpointIdsBuilder_ = null;
                             sliceEndpointIds_ = other.sliceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             sliceEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceEndpointIdsFieldBuilder() : null;
                         } else {
                             sliceEndpointIdsBuilder_.addAllMessages(other.sliceEndpointIds_);
@@ -35424,7 +37055,7 @@ public final class ContextOuterClass {
                     if (!other.sliceConstraints_.isEmpty()) {
                         if (sliceConstraints_.isEmpty()) {
                             sliceConstraints_ = other.sliceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureSliceConstraintsIsMutable();
                             sliceConstraints_.addAll(other.sliceConstraints_);
@@ -35437,7 +37068,7 @@ public final class ContextOuterClass {
                             sliceConstraintsBuilder_.dispose();
                             sliceConstraintsBuilder_ = null;
                             sliceConstraints_ = other.sliceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             sliceConstraintsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceConstraintsFieldBuilder() : null;
                         } else {
                             sliceConstraintsBuilder_.addAllMessages(other.sliceConstraints_);
@@ -35448,7 +37079,7 @@ public final class ContextOuterClass {
                     if (!other.sliceServiceIds_.isEmpty()) {
                         if (sliceServiceIds_.isEmpty()) {
                             sliceServiceIds_ = other.sliceServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureSliceServiceIdsIsMutable();
                             sliceServiceIds_.addAll(other.sliceServiceIds_);
@@ -35461,7 +37092,7 @@ public final class ContextOuterClass {
                             sliceServiceIdsBuilder_.dispose();
                             sliceServiceIdsBuilder_ = null;
                             sliceServiceIds_ = other.sliceServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             sliceServiceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceServiceIdsFieldBuilder() : null;
                         } else {
                             sliceServiceIdsBuilder_.addAllMessages(other.sliceServiceIds_);
@@ -35472,7 +37103,7 @@ public final class ContextOuterClass {
                     if (!other.sliceSubsliceIds_.isEmpty()) {
                         if (sliceSubsliceIds_.isEmpty()) {
                             sliceSubsliceIds_ = other.sliceSubsliceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000020);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                         } else {
                             ensureSliceSubsliceIdsIsMutable();
                             sliceSubsliceIds_.addAll(other.sliceSubsliceIds_);
@@ -35485,7 +37116,7 @@ public final class ContextOuterClass {
                             sliceSubsliceIdsBuilder_.dispose();
                             sliceSubsliceIdsBuilder_ = null;
                             sliceSubsliceIds_ = other.sliceSubsliceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000020);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                             sliceSubsliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceSubsliceIdsFieldBuilder() : null;
                         } else {
                             sliceSubsliceIdsBuilder_.addAllMessages(other.sliceSubsliceIds_);
@@ -35504,7 +37135,7 @@ public final class ContextOuterClass {
                 if (other.hasTimestamp()) {
                     mergeTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -35516,125 +37147,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Slice parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                    if (sliceEndpointIdsBuilder_ == null) {
-                                        ensureSliceEndpointIdsIsMutable();
-                                        sliceEndpointIds_.add(m);
-                                    } else {
-                                        sliceEndpointIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    context.ContextOuterClass.Constraint m = input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry);
-                                    if (sliceConstraintsBuilder_ == null) {
-                                        ensureSliceConstraintsIsMutable();
-                                        sliceConstraints_.add(m);
-                                    } else {
-                                        sliceConstraintsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                    if (sliceServiceIdsBuilder_ == null) {
-                                        ensureSliceServiceIdsIsMutable();
-                                        sliceServiceIds_.add(m);
-                                    } else {
-                                        sliceServiceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-                                    if (sliceSubsliceIdsBuilder_ == null) {
-                                        ensureSliceSubsliceIdsIsMutable();
-                                        sliceSubsliceIds_.add(m);
-                                    } else {
-                                        sliceSubsliceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 50
-                            case 58:
-                                {
-                                    input.readMessage(getSliceStatusFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000040;
-                                    break;
-                                }
-                            // case 58
-                            case 66:
-                                {
-                                    input.readMessage(getSliceConfigFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000080;
-                                    break;
-                                }
-                            // case 66
-                            case 74:
-                                {
-                                    input.readMessage(getSliceOwnerFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000100;
-                                    break;
-                                }
-                            // case 74
-                            case 82:
-                                {
-                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000200;
-                                    break;
-                                }
-                            // case 82
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Slice) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -35649,7 +37172,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceId field is set.
              */
             public boolean hasSliceId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return sliceIdBuilder_ != null || sliceId_ != null;
             }
 
             /**
@@ -35673,11 +37196,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceId_ = value;
+                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -35687,11 +37209,10 @@ public final class ContextOuterClass {
             public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
                 if (sliceIdBuilder_ == null) {
                     sliceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -35700,16 +37221,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
                 if (sliceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
-                        getSliceIdBuilder().mergeFrom(value);
+                    if (sliceId_ != null) {
+                        sliceId_ = context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
                     } else {
                         sliceId_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -35717,13 +37237,13 @@ public final class ContextOuterClass {
              * <code>.context.SliceId slice_id = 1;</code>
              */
             public Builder clearSliceId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                sliceId_ = null;
-                if (sliceIdBuilder_ != null) {
-                    sliceIdBuilder_.dispose();
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = null;
+                    onChanged();
+                } else {
+                    sliceId_ = null;
                     sliceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -35731,7 +37251,6 @@ public final class ContextOuterClass {
              * <code>.context.SliceId slice_id = 1;</code>
              */
             public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSliceIdFieldBuilder().getBuilder();
             }
@@ -35801,7 +37320,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -35812,7 +37330,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -35828,7 +37345,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -35836,9 +37352,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(sliceEndpointIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -35990,7 +37506,7 @@ public final class ContextOuterClass {
             public Builder clearSliceEndpointIds() {
                 if (sliceEndpointIdsBuilder_ == null) {
                     sliceEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     sliceEndpointIdsBuilder_.clear();
@@ -36064,7 +37580,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getSliceEndpointIdsFieldBuilder() {
                 if (sliceEndpointIdsBuilder_ == null) {
-                    sliceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(sliceEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    sliceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(sliceEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     sliceEndpointIds_ = null;
                 }
                 return sliceEndpointIdsBuilder_;
@@ -36073,9 +37589,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_ = java.util.Collections.emptyList();
 
             private void ensureSliceConstraintsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(sliceConstraints_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -36227,7 +37743,7 @@ public final class ContextOuterClass {
             public Builder clearSliceConstraints() {
                 if (sliceConstraintsBuilder_ == null) {
                     sliceConstraints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     sliceConstraintsBuilder_.clear();
@@ -36301,7 +37817,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> getSliceConstraintsFieldBuilder() {
                 if (sliceConstraintsBuilder_ == null) {
-                    sliceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(sliceConstraints_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    sliceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(sliceConstraints_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     sliceConstraints_ = null;
                 }
                 return sliceConstraintsBuilder_;
@@ -36310,9 +37826,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceServiceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000010) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(sliceServiceIds_);
-                    bitField0_ |= 0x00000010;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -36464,7 +37980,7 @@ public final class ContextOuterClass {
             public Builder clearSliceServiceIds() {
                 if (sliceServiceIdsBuilder_ == null) {
                     sliceServiceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000010);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     sliceServiceIdsBuilder_.clear();
@@ -36538,7 +38054,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getSliceServiceIdsFieldBuilder() {
                 if (sliceServiceIdsBuilder_ == null) {
-                    sliceServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(sliceServiceIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
+                    sliceServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(sliceServiceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     sliceServiceIds_ = null;
                 }
                 return sliceServiceIdsBuilder_;
@@ -36547,9 +38063,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceSubsliceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000020) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceSubsliceIds_);
-                    bitField0_ |= 0x00000020;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -36701,7 +38217,7 @@ public final class ContextOuterClass {
             public Builder clearSliceSubsliceIds() {
                 if (sliceSubsliceIdsBuilder_ == null) {
                     sliceSubsliceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000020);
+                    bitField0_ = (bitField0_ & ~0x00000008);
                     onChanged();
                 } else {
                     sliceSubsliceIdsBuilder_.clear();
@@ -36775,7 +38291,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceSubsliceIdsFieldBuilder() {
                 if (sliceSubsliceIdsBuilder_ == null) {
-                    sliceSubsliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceSubsliceIds_, ((bitField0_ & 0x00000020) != 0), getParentForChildren(), isClean());
+                    sliceSubsliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceSubsliceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                     sliceSubsliceIds_ = null;
                 }
                 return sliceSubsliceIdsBuilder_;
@@ -36790,7 +38306,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceStatus field is set.
              */
             public boolean hasSliceStatus() {
-                return ((bitField0_ & 0x00000040) != 0);
+                return sliceStatusBuilder_ != null || sliceStatus_ != null;
             }
 
             /**
@@ -36814,11 +38330,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceStatus_ = value;
+                    onChanged();
                 } else {
                     sliceStatusBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -36828,11 +38343,10 @@ public final class ContextOuterClass {
             public Builder setSliceStatus(context.ContextOuterClass.SliceStatus.Builder builderForValue) {
                 if (sliceStatusBuilder_ == null) {
                     sliceStatus_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceStatusBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -36841,16 +38355,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceStatus(context.ContextOuterClass.SliceStatus value) {
                 if (sliceStatusBuilder_ == null) {
-                    if (((bitField0_ & 0x00000040) != 0) && sliceStatus_ != null && sliceStatus_ != context.ContextOuterClass.SliceStatus.getDefaultInstance()) {
-                        getSliceStatusBuilder().mergeFrom(value);
+                    if (sliceStatus_ != null) {
+                        sliceStatus_ = context.ContextOuterClass.SliceStatus.newBuilder(sliceStatus_).mergeFrom(value).buildPartial();
                     } else {
                         sliceStatus_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceStatusBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -36858,13 +38371,13 @@ public final class ContextOuterClass {
              * <code>.context.SliceStatus slice_status = 7;</code>
              */
             public Builder clearSliceStatus() {
-                bitField0_ = (bitField0_ & ~0x00000040);
-                sliceStatus_ = null;
-                if (sliceStatusBuilder_ != null) {
-                    sliceStatusBuilder_.dispose();
+                if (sliceStatusBuilder_ == null) {
+                    sliceStatus_ = null;
+                    onChanged();
+                } else {
+                    sliceStatus_ = null;
                     sliceStatusBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -36872,7 +38385,6 @@ public final class ContextOuterClass {
              * <code>.context.SliceStatus slice_status = 7;</code>
              */
             public context.ContextOuterClass.SliceStatus.Builder getSliceStatusBuilder() {
-                bitField0_ |= 0x00000040;
                 onChanged();
                 return getSliceStatusFieldBuilder().getBuilder();
             }
@@ -36908,7 +38420,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceConfig field is set.
              */
             public boolean hasSliceConfig() {
-                return ((bitField0_ & 0x00000080) != 0);
+                return sliceConfigBuilder_ != null || sliceConfig_ != null;
             }
 
             /**
@@ -36932,11 +38444,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceConfig_ = value;
+                    onChanged();
                 } else {
                     sliceConfigBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -36946,11 +38457,10 @@ public final class ContextOuterClass {
             public Builder setSliceConfig(context.ContextOuterClass.SliceConfig.Builder builderForValue) {
                 if (sliceConfigBuilder_ == null) {
                     sliceConfig_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceConfigBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -36959,16 +38469,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceConfig(context.ContextOuterClass.SliceConfig value) {
                 if (sliceConfigBuilder_ == null) {
-                    if (((bitField0_ & 0x00000080) != 0) && sliceConfig_ != null && sliceConfig_ != context.ContextOuterClass.SliceConfig.getDefaultInstance()) {
-                        getSliceConfigBuilder().mergeFrom(value);
+                    if (sliceConfig_ != null) {
+                        sliceConfig_ = context.ContextOuterClass.SliceConfig.newBuilder(sliceConfig_).mergeFrom(value).buildPartial();
                     } else {
                         sliceConfig_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceConfigBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -36976,13 +38485,13 @@ public final class ContextOuterClass {
              * <code>.context.SliceConfig slice_config = 8;</code>
              */
             public Builder clearSliceConfig() {
-                bitField0_ = (bitField0_ & ~0x00000080);
-                sliceConfig_ = null;
-                if (sliceConfigBuilder_ != null) {
-                    sliceConfigBuilder_.dispose();
+                if (sliceConfigBuilder_ == null) {
+                    sliceConfig_ = null;
+                    onChanged();
+                } else {
+                    sliceConfig_ = null;
                     sliceConfigBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -36990,7 +38499,6 @@ public final class ContextOuterClass {
              * <code>.context.SliceConfig slice_config = 8;</code>
              */
             public context.ContextOuterClass.SliceConfig.Builder getSliceConfigBuilder() {
-                bitField0_ |= 0x00000080;
                 onChanged();
                 return getSliceConfigFieldBuilder().getBuilder();
             }
@@ -37026,7 +38534,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceOwner field is set.
              */
             public boolean hasSliceOwner() {
-                return ((bitField0_ & 0x00000100) != 0);
+                return sliceOwnerBuilder_ != null || sliceOwner_ != null;
             }
 
             /**
@@ -37050,11 +38558,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceOwner_ = value;
+                    onChanged();
                 } else {
                     sliceOwnerBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -37064,11 +38571,10 @@ public final class ContextOuterClass {
             public Builder setSliceOwner(context.ContextOuterClass.SliceOwner.Builder builderForValue) {
                 if (sliceOwnerBuilder_ == null) {
                     sliceOwner_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceOwnerBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -37077,16 +38583,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceOwner(context.ContextOuterClass.SliceOwner value) {
                 if (sliceOwnerBuilder_ == null) {
-                    if (((bitField0_ & 0x00000100) != 0) && sliceOwner_ != null && sliceOwner_ != context.ContextOuterClass.SliceOwner.getDefaultInstance()) {
-                        getSliceOwnerBuilder().mergeFrom(value);
+                    if (sliceOwner_ != null) {
+                        sliceOwner_ = context.ContextOuterClass.SliceOwner.newBuilder(sliceOwner_).mergeFrom(value).buildPartial();
                     } else {
                         sliceOwner_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceOwnerBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -37094,13 +38599,13 @@ public final class ContextOuterClass {
              * <code>.context.SliceOwner slice_owner = 9;</code>
              */
             public Builder clearSliceOwner() {
-                bitField0_ = (bitField0_ & ~0x00000100);
-                sliceOwner_ = null;
-                if (sliceOwnerBuilder_ != null) {
-                    sliceOwnerBuilder_.dispose();
+                if (sliceOwnerBuilder_ == null) {
+                    sliceOwner_ = null;
+                    onChanged();
+                } else {
+                    sliceOwner_ = null;
                     sliceOwnerBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -37108,7 +38613,6 @@ public final class ContextOuterClass {
              * <code>.context.SliceOwner slice_owner = 9;</code>
              */
             public context.ContextOuterClass.SliceOwner.Builder getSliceOwnerBuilder() {
-                bitField0_ |= 0x00000100;
                 onChanged();
                 return getSliceOwnerFieldBuilder().getBuilder();
             }
@@ -37144,7 +38648,7 @@ public final class ContextOuterClass {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return ((bitField0_ & 0x00000200) != 0);
+                return timestampBuilder_ != null || timestamp_ != null;
             }
 
             /**
@@ -37168,11 +38672,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000200;
-                onChanged();
                 return this;
             }
 
@@ -37182,11 +38685,10 @@ public final class ContextOuterClass {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000200;
-                onChanged();
                 return this;
             }
 
@@ -37195,16 +38697,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000200) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getTimestampBuilder().mergeFrom(value);
+                    if (timestamp_ != null) {
+                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
                     } else {
                         timestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000200;
-                onChanged();
                 return this;
             }
 
@@ -37212,13 +38713,13 @@ public final class ContextOuterClass {
              * <code>.context.Timestamp timestamp = 10;</code>
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000200);
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                    onChanged();
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -37226,7 +38727,6 @@ public final class ContextOuterClass {
              * <code>.context.Timestamp timestamp = 10;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-                bitField0_ |= 0x00000200;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -37280,17 +38780,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Slice parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Slice(input, extensionRegistry);
             }
         };
 
@@ -37365,6 +38855,63 @@ public final class ContextOuterClass {
             return new SliceOwner();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceOwner(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (ownerUuid_ != null) {
+                                    subBuilder = ownerUuid_.toBuilder();
+                                }
+                                ownerUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(ownerUuid_);
+                                    ownerUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                ownerString_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
         }
@@ -37401,13 +38948,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
-            return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
+            return getOwnerUuid();
         }
 
         public static final int OWNER_STRING_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object ownerString_ = "";
+        private volatile java.lang.Object ownerString_;
 
         /**
          * <code>string owner_string = 2;</code>
@@ -37460,10 +39006,10 @@ public final class ContextOuterClass {
             if (ownerUuid_ != null) {
                 output.writeMessage(1, getOwnerUuid());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ownerString_)) {
+            if (!getOwnerStringBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ownerString_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -37475,10 +39021,10 @@ public final class ContextOuterClass {
             if (ownerUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOwnerUuid());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ownerString_)) {
+            if (!getOwnerStringBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ownerString_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -37500,7 +39046,7 @@ public final class ContextOuterClass {
             }
             if (!getOwnerString().equals(other.getOwnerString()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -37518,7 +39064,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + OWNER_STRING_FIELD_NUMBER;
             hash = (53 * hash) + getOwnerString().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -37612,19 +39158,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceOwner.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                ownerUuid_ = null;
-                if (ownerUuidBuilder_ != null) {
-                    ownerUuidBuilder_.dispose();
+                if (ownerUuidBuilder_ == null) {
+                    ownerUuid_ = null;
+                } else {
+                    ownerUuid_ = null;
                     ownerUuidBuilder_ = null;
                 }
                 ownerString_ = "";
@@ -37653,21 +39206,44 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceOwner buildPartial() {
                 context.ContextOuterClass.SliceOwner result = new context.ContextOuterClass.SliceOwner(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (ownerUuidBuilder_ == null) {
+                    result.ownerUuid_ = ownerUuid_;
+                } else {
+                    result.ownerUuid_ = ownerUuidBuilder_.build();
                 }
+                result.ownerString_ = ownerString_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceOwner result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.ownerUuid_ = ownerUuidBuilder_ == null ? ownerUuid_ : ownerUuidBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.ownerString_ = ownerString_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -37688,10 +39264,9 @@ public final class ContextOuterClass {
                 }
                 if (!other.getOwnerString().isEmpty()) {
                     ownerString_ = other.ownerString_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -37703,54 +39278,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceOwner parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getOwnerUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    ownerString_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceOwner) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid ownerUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> ownerUuidBuilder_;
@@ -37760,7 +39301,7 @@ public final class ContextOuterClass {
              * @return Whether the ownerUuid field is set.
              */
             public boolean hasOwnerUuid() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return ownerUuidBuilder_ != null || ownerUuid_ != null;
             }
 
             /**
@@ -37784,11 +39325,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     ownerUuid_ = value;
+                    onChanged();
                 } else {
                     ownerUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -37798,11 +39338,10 @@ public final class ContextOuterClass {
             public Builder setOwnerUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (ownerUuidBuilder_ == null) {
                     ownerUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     ownerUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -37811,16 +39350,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeOwnerUuid(context.ContextOuterClass.Uuid value) {
                 if (ownerUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && ownerUuid_ != null && ownerUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getOwnerUuidBuilder().mergeFrom(value);
+                    if (ownerUuid_ != null) {
+                        ownerUuid_ = context.ContextOuterClass.Uuid.newBuilder(ownerUuid_).mergeFrom(value).buildPartial();
                     } else {
                         ownerUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     ownerUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -37828,13 +39366,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid owner_uuid = 1;</code>
              */
             public Builder clearOwnerUuid() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                ownerUuid_ = null;
-                if (ownerUuidBuilder_ != null) {
-                    ownerUuidBuilder_.dispose();
+                if (ownerUuidBuilder_ == null) {
+                    ownerUuid_ = null;
+                    onChanged();
+                } else {
+                    ownerUuid_ = null;
                     ownerUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -37842,7 +39380,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid owner_uuid = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getOwnerUuidBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getOwnerUuidFieldBuilder().getBuilder();
             }
@@ -37912,7 +39449,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 ownerString_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -37923,7 +39459,6 @@ public final class ContextOuterClass {
              */
             public Builder clearOwnerString() {
                 ownerString_ = getDefaultInstance().getOwnerString();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -37939,7 +39474,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 ownerString_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -37971,17 +39505,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceOwner parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceOwner(input, extensionRegistry);
             }
         };
 
@@ -38039,6 +39563,50 @@ public final class ContextOuterClass {
             return new SliceStatus();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceStatus(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                sliceStatus_ = rawValue;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
         }
@@ -38050,7 +39618,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_STATUS_FIELD_NUMBER = 1;
 
-        private int sliceStatus_ = 0;
+        private int sliceStatus_;
 
         /**
          * <code>.context.SliceStatusEnum slice_status = 1;</code>
@@ -38067,7 +39635,8 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
-            context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.forNumber(sliceStatus_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
             return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
         }
 
@@ -38089,7 +39658,7 @@ public final class ContextOuterClass {
             if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
                 output.writeEnum(1, sliceStatus_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -38101,7 +39670,7 @@ public final class ContextOuterClass {
             if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, sliceStatus_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -38117,7 +39686,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceStatus other = (context.ContextOuterClass.SliceStatus) obj;
             if (sliceStatus_ != other.sliceStatus_)
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -38131,7 +39700,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + SLICE_STATUS_FIELD_NUMBER;
             hash = (53 * hash) + sliceStatus_;
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -38225,16 +39794,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceStatus.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 sliceStatus_ = 0;
                 return this;
             }
@@ -38261,18 +39836,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceStatus buildPartial() {
                 context.ContextOuterClass.SliceStatus result = new context.ContextOuterClass.SliceStatus(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.sliceStatus_ = sliceStatus_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceStatus result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.sliceStatus_ = sliceStatus_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -38291,7 +39887,7 @@ public final class ContextOuterClass {
                 if (other.sliceStatus_ != 0) {
                     setSliceStatusValue(other.getSliceStatusValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -38303,47 +39899,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceStatus parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    sliceStatus_ = input.readEnum();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceStatus) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int sliceStatus_ = 0;
 
             /**
@@ -38362,7 +39931,6 @@ public final class ContextOuterClass {
              */
             public Builder setSliceStatusValue(int value) {
                 sliceStatus_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -38373,7 +39941,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
-                context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.forNumber(sliceStatus_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
                 return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
             }
 
@@ -38386,7 +39955,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000001;
                 sliceStatus_ = value.getNumber();
                 onChanged();
                 return this;
@@ -38397,7 +39965,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearSliceStatus() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 sliceStatus_ = 0;
                 onChanged();
                 return this;
@@ -38430,17 +39997,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceStatus parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceStatus(input, extensionRegistry);
             }
         };
 
@@ -38511,6 +40068,57 @@ public final class ContextOuterClass {
             return new SliceConfig();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                configRules_.add(input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    configRules_ = java.util.Collections.unmodifiableList(configRules_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
         }
@@ -38522,7 +40130,6 @@ public final class ContextOuterClass {
 
         public static final int CONFIG_RULES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
 
         /**
@@ -38583,7 +40190,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 output.writeMessage(1, configRules_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -38595,7 +40202,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -38611,7 +40218,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceConfig other = (context.ContextOuterClass.SliceConfig) obj;
             if (!getConfigRulesList().equals(other.getConfigRulesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -38627,7 +40234,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                 hash = (53 * hash) + getConfigRulesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -38721,23 +40328,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceConfig.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getConfigRulesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (configRulesBuilder_ == null) {
                     configRules_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    configRules_ = null;
                     configRulesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -38763,15 +40376,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceConfig buildPartial() {
                 context.ContextOuterClass.SliceConfig result = new context.ContextOuterClass.SliceConfig(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceConfig result) {
+                int from_bitField0_ = bitField0_;
                 if (configRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         configRules_ = java.util.Collections.unmodifiableList(configRules_);
@@ -38781,10 +40386,38 @@ public final class ContextOuterClass {
                 } else {
                     result.configRules_ = configRulesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceConfig result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -38824,7 +40457,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -38836,47 +40469,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceConfig parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
-                                    if (configRulesBuilder_ == null) {
-                                        ensureConfigRulesIsMutable();
-                                        configRules_.add(m);
-                                    } else {
-                                        configRulesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -39146,17 +40749,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceConfig(input, extensionRegistry);
             }
         };
 
@@ -39227,6 +40820,57 @@ public final class ContextOuterClass {
             return new SliceIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                sliceIds_.add(input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
         }
@@ -39238,7 +40882,6 @@ public final class ContextOuterClass {
 
         public static final int SLICE_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.SliceId> sliceIds_;
 
         /**
@@ -39299,7 +40942,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < sliceIds_.size(); i++) {
                 output.writeMessage(1, sliceIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -39311,7 +40954,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < sliceIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, sliceIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -39327,7 +40970,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceIdList other = (context.ContextOuterClass.SliceIdList) obj;
             if (!getSliceIdsList().equals(other.getSliceIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -39343,7 +40986,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getSliceIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -39437,23 +41080,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getSliceIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (sliceIdsBuilder_ == null) {
                     sliceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    sliceIds_ = null;
                     sliceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -39479,15 +41128,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceIdList buildPartial() {
                 context.ContextOuterClass.SliceIdList result = new context.ContextOuterClass.SliceIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (sliceIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
@@ -39497,10 +41138,38 @@ public final class ContextOuterClass {
                 } else {
                     result.sliceIds_ = sliceIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -39540,7 +41209,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -39552,47 +41221,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-                                    if (sliceIdsBuilder_ == null) {
-                                        ensureSliceIdsIsMutable();
-                                        sliceIds_.add(m);
-                                    } else {
-                                        sliceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -39862,17 +41501,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceIdList(input, extensionRegistry);
             }
         };
 
@@ -39943,6 +41572,57 @@ public final class ContextOuterClass {
             return new SliceList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    slices_ = new java.util.ArrayList<context.ContextOuterClass.Slice>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                slices_.add(input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    slices_ = java.util.Collections.unmodifiableList(slices_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
         }
@@ -39954,7 +41634,6 @@ public final class ContextOuterClass {
 
         public static final int SLICES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Slice> slices_;
 
         /**
@@ -40015,7 +41694,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < slices_.size(); i++) {
                 output.writeMessage(1, slices_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -40027,7 +41706,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < slices_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, slices_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -40043,7 +41722,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceList other = (context.ContextOuterClass.SliceList) obj;
             if (!getSlicesList().equals(other.getSlicesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -40059,7 +41738,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICES_FIELD_NUMBER;
                 hash = (53 * hash) + getSlicesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -40153,23 +41832,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getSlicesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (slicesBuilder_ == null) {
                     slices_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    slices_ = null;
                     slicesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -40195,15 +41880,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceList buildPartial() {
                 context.ContextOuterClass.SliceList result = new context.ContextOuterClass.SliceList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceList result) {
+                int from_bitField0_ = bitField0_;
                 if (slicesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         slices_ = java.util.Collections.unmodifiableList(slices_);
@@ -40213,10 +41890,38 @@ public final class ContextOuterClass {
                 } else {
                     result.slices_ = slicesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -40256,7 +41961,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -40268,47 +41973,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Slice m = input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry);
-                                    if (slicesBuilder_ == null) {
-                                        ensureSlicesIsMutable();
-                                        slices_.add(m);
-                                    } else {
-                                        slicesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -40578,17 +42253,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceList(input, extensionRegistry);
             }
         };
 
@@ -40680,6 +42345,82 @@ public final class ContextOuterClass {
             return new SliceFilter();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceFilter(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.SliceIdList.Builder subBuilder = null;
+                                if (sliceIds_ != null) {
+                                    subBuilder = sliceIds_.toBuilder();
+                                }
+                                sliceIds_ = input.readMessage(context.ContextOuterClass.SliceIdList.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceIds_);
+                                    sliceIds_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                includeEndpointIds_ = input.readBool();
+                                break;
+                            }
+                        case 24:
+                            {
+                                includeConstraints_ = input.readBool();
+                                break;
+                            }
+                        case 32:
+                            {
+                                includeServiceIds_ = input.readBool();
+                                break;
+                            }
+                        case 40:
+                            {
+                                includeSubsliceIds_ = input.readBool();
+                                break;
+                            }
+                        case 48:
+                            {
+                                includeConfigRules_ = input.readBool();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
         }
@@ -40716,12 +42457,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdListOrBuilder getSliceIdsOrBuilder() {
-            return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
+            return getSliceIds();
         }
 
         public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
 
-        private boolean includeEndpointIds_ = false;
+        private boolean includeEndpointIds_;
 
         /**
          * <code>bool include_endpoint_ids = 2;</code>
@@ -40734,7 +42475,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;
 
-        private boolean includeConstraints_ = false;
+        private boolean includeConstraints_;
 
         /**
          * <code>bool include_constraints = 3;</code>
@@ -40747,7 +42488,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_SERVICE_IDS_FIELD_NUMBER = 4;
 
-        private boolean includeServiceIds_ = false;
+        private boolean includeServiceIds_;
 
         /**
          * <code>bool include_service_ids = 4;</code>
@@ -40760,7 +42501,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_SUBSLICE_IDS_FIELD_NUMBER = 5;
 
-        private boolean includeSubsliceIds_ = false;
+        private boolean includeSubsliceIds_;
 
         /**
          * <code>bool include_subslice_ids = 5;</code>
@@ -40773,7 +42514,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 6;
 
-        private boolean includeConfigRules_ = false;
+        private boolean includeConfigRules_;
 
         /**
          * <code>bool include_config_rules = 6;</code>
@@ -40817,7 +42558,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 output.writeBool(6, includeConfigRules_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -40844,7 +42585,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(6, includeConfigRules_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -40874,7 +42615,7 @@ public final class ContextOuterClass {
                 return false;
             if (getIncludeConfigRules() != other.getIncludeConfigRules())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -40900,7 +42641,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeSubsliceIds());
             hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -40994,19 +42735,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceFilter.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                sliceIds_ = null;
-                if (sliceIdsBuilder_ != null) {
-                    sliceIdsBuilder_.dispose();
+                if (sliceIdsBuilder_ == null) {
+                    sliceIds_ = null;
+                } else {
+                    sliceIds_ = null;
                     sliceIdsBuilder_ = null;
                 }
                 includeEndpointIds_ = false;
@@ -41039,33 +42787,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceFilter buildPartial() {
                 context.ContextOuterClass.SliceFilter result = new context.ContextOuterClass.SliceFilter(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (sliceIdsBuilder_ == null) {
+                    result.sliceIds_ = sliceIds_;
+                } else {
+                    result.sliceIds_ = sliceIdsBuilder_.build();
                 }
+                result.includeEndpointIds_ = includeEndpointIds_;
+                result.includeConstraints_ = includeConstraints_;
+                result.includeServiceIds_ = includeServiceIds_;
+                result.includeSubsliceIds_ = includeSubsliceIds_;
+                result.includeConfigRules_ = includeConfigRules_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceFilter result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.sliceIds_ = sliceIdsBuilder_ == null ? sliceIds_ : sliceIdsBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.includeEndpointIds_ = includeEndpointIds_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.includeConstraints_ = includeConstraints_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.includeServiceIds_ = includeServiceIds_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.includeSubsliceIds_ = includeSubsliceIds_;
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.includeConfigRules_ = includeConfigRules_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -41099,7 +42862,7 @@ public final class ContextOuterClass {
                 if (other.getIncludeConfigRules() != false) {
                     setIncludeConfigRules(other.getIncludeConfigRules());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -41111,82 +42874,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceFilter parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getSliceIdsFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    includeEndpointIds_ = input.readBool();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 24:
-                                {
-                                    includeConstraints_ = input.readBool();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    includeServiceIds_ = input.readBool();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            case 40:
-                                {
-                                    includeSubsliceIds_ = input.readBool();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 40
-                            case 48:
-                                {
-                                    includeConfigRules_ = input.readBool();
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 48
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceFilter) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.SliceIdList sliceIds_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceIdList, context.ContextOuterClass.SliceIdList.Builder, context.ContextOuterClass.SliceIdListOrBuilder> sliceIdsBuilder_;
@@ -41196,7 +42897,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceIds field is set.
              */
             public boolean hasSliceIds() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return sliceIdsBuilder_ != null || sliceIds_ != null;
             }
 
             /**
@@ -41220,11 +42921,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceIds_ = value;
+                    onChanged();
                 } else {
                     sliceIdsBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -41234,11 +42934,10 @@ public final class ContextOuterClass {
             public Builder setSliceIds(context.ContextOuterClass.SliceIdList.Builder builderForValue) {
                 if (sliceIdsBuilder_ == null) {
                     sliceIds_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceIdsBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -41247,16 +42946,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceIds(context.ContextOuterClass.SliceIdList value) {
                 if (sliceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && sliceIds_ != null && sliceIds_ != context.ContextOuterClass.SliceIdList.getDefaultInstance()) {
-                        getSliceIdsBuilder().mergeFrom(value);
+                    if (sliceIds_ != null) {
+                        sliceIds_ = context.ContextOuterClass.SliceIdList.newBuilder(sliceIds_).mergeFrom(value).buildPartial();
                     } else {
                         sliceIds_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceIdsBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -41264,13 +42962,13 @@ public final class ContextOuterClass {
              * <code>.context.SliceIdList slice_ids = 1;</code>
              */
             public Builder clearSliceIds() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                sliceIds_ = null;
-                if (sliceIdsBuilder_ != null) {
-                    sliceIdsBuilder_.dispose();
+                if (sliceIdsBuilder_ == null) {
+                    sliceIds_ = null;
+                    onChanged();
+                } else {
+                    sliceIds_ = null;
                     sliceIdsBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -41278,7 +42976,6 @@ public final class ContextOuterClass {
              * <code>.context.SliceIdList slice_ids = 1;</code>
              */
             public context.ContextOuterClass.SliceIdList.Builder getSliceIdsBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSliceIdsFieldBuilder().getBuilder();
             }
@@ -41323,7 +43020,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeEndpointIds(boolean value) {
                 includeEndpointIds_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -41333,7 +43029,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeEndpointIds() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 includeEndpointIds_ = false;
                 onChanged();
                 return this;
@@ -41357,7 +43052,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConstraints(boolean value) {
                 includeConstraints_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -41367,7 +43061,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConstraints() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 includeConstraints_ = false;
                 onChanged();
                 return this;
@@ -41391,7 +43084,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeServiceIds(boolean value) {
                 includeServiceIds_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -41401,7 +43093,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeServiceIds() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 includeServiceIds_ = false;
                 onChanged();
                 return this;
@@ -41425,7 +43116,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeSubsliceIds(boolean value) {
                 includeSubsliceIds_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -41435,7 +43125,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeSubsliceIds() {
-                bitField0_ = (bitField0_ & ~0x00000010);
                 includeSubsliceIds_ = false;
                 onChanged();
                 return this;
@@ -41459,7 +43148,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConfigRules(boolean value) {
                 includeConfigRules_ = value;
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return this;
             }
@@ -41469,7 +43157,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConfigRules() {
-                bitField0_ = (bitField0_ & ~0x00000020);
                 includeConfigRules_ = false;
                 onChanged();
                 return this;
@@ -41502,17 +43189,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceFilter(input, extensionRegistry);
             }
         };
 
@@ -41591,6 +43268,70 @@ public final class ContextOuterClass {
             return new SliceEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.SliceId.Builder subBuilder = null;
+                                if (sliceId_ != null) {
+                                    subBuilder = sliceId_.toBuilder();
+                                }
+                                sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceId_);
+                                    sliceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
         }
@@ -41627,7 +43368,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int SLICE_ID_FIELD_NUMBER = 2;
@@ -41657,7 +43398,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+            return getSliceId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -41681,7 +43422,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 output.writeMessage(2, getSliceId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -41696,7 +43437,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSliceId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -41722,7 +43463,7 @@ public final class ContextOuterClass {
                 if (!getSliceId().equals(other.getSliceId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -41742,7 +43483,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getSliceId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -41836,24 +43577,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                sliceId_ = null;
-                if (sliceIdBuilder_ != null) {
-                    sliceIdBuilder_.dispose();
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = null;
+                } else {
+                    sliceId_ = null;
                     sliceIdBuilder_ = null;
                 }
                 return this;
@@ -41881,21 +43630,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceEvent buildPartial() {
                 context.ContextOuterClass.SliceEvent result = new context.ContextOuterClass.SliceEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (sliceIdBuilder_ == null) {
+                    result.sliceId_ = sliceId_;
+                } else {
+                    result.sliceId_ = sliceIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -41917,7 +43693,7 @@ public final class ContextOuterClass {
                 if (other.hasSliceId()) {
                     mergeSliceId(other.getSliceId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -41929,54 +43705,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -41986,7 +43728,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -42010,11 +43752,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -42024,11 +43765,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -42037,16 +43777,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -42054,13 +43793,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -42068,7 +43807,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -42104,7 +43842,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceId field is set.
              */
             public boolean hasSliceId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return sliceIdBuilder_ != null || sliceId_ != null;
             }
 
             /**
@@ -42128,11 +43866,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceId_ = value;
+                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -42142,11 +43879,10 @@ public final class ContextOuterClass {
             public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
                 if (sliceIdBuilder_ == null) {
                     sliceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -42155,16 +43891,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
                 if (sliceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
-                        getSliceIdBuilder().mergeFrom(value);
+                    if (sliceId_ != null) {
+                        sliceId_ = context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
                     } else {
                         sliceId_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -42172,13 +43907,13 @@ public final class ContextOuterClass {
              * <code>.context.SliceId slice_id = 2;</code>
              */
             public Builder clearSliceId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                sliceId_ = null;
-                if (sliceIdBuilder_ != null) {
-                    sliceIdBuilder_.dispose();
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = null;
+                    onChanged();
+                } else {
+                    sliceId_ = null;
                     sliceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -42186,7 +43921,6 @@ public final class ContextOuterClass {
              * <code>.context.SliceId slice_id = 2;</code>
              */
             public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getSliceIdFieldBuilder().getBuilder();
             }
@@ -42240,17 +43974,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceEvent(input, extensionRegistry);
             }
         };
 
@@ -42316,6 +44040,57 @@ public final class ContextOuterClass {
             return new ConnectionId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (connectionUuid_ != null) {
+                                    subBuilder = connectionUuid_.toBuilder();
+                                }
+                                connectionUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(connectionUuid_);
+                                    connectionUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
         }
@@ -42352,7 +44127,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
-            return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
+            return getConnectionUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -42373,7 +44148,7 @@ public final class ContextOuterClass {
             if (connectionUuid_ != null) {
                 output.writeMessage(1, getConnectionUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -42385,7 +44160,7 @@ public final class ContextOuterClass {
             if (connectionUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getConnectionUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -42405,7 +44180,7 @@ public final class ContextOuterClass {
                 if (!getConnectionUuid().equals(other.getConnectionUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -42421,7 +44196,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTION_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -42519,19 +44294,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                connectionUuid_ = null;
-                if (connectionUuidBuilder_ != null) {
-                    connectionUuidBuilder_.dispose();
+                if (connectionUuidBuilder_ == null) {
+                    connectionUuid_ = null;
+                } else {
+                    connectionUuid_ = null;
                     connectionUuidBuilder_ = null;
                 }
                 return this;
@@ -42559,18 +44341,43 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionId buildPartial() {
                 context.ContextOuterClass.ConnectionId result = new context.ContextOuterClass.ConnectionId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (connectionUuidBuilder_ == null) {
+                    result.connectionUuid_ = connectionUuid_;
+                } else {
+                    result.connectionUuid_ = connectionUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.connectionUuid_ = connectionUuidBuilder_ == null ? connectionUuid_ : connectionUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -42589,7 +44396,7 @@ public final class ContextOuterClass {
                 if (other.hasConnectionUuid()) {
                     mergeConnectionUuid(other.getConnectionUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -42601,47 +44408,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getConnectionUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid connectionUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> connectionUuidBuilder_;
@@ -42651,7 +44431,7 @@ public final class ContextOuterClass {
              * @return Whether the connectionUuid field is set.
              */
             public boolean hasConnectionUuid() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return connectionUuidBuilder_ != null || connectionUuid_ != null;
             }
 
             /**
@@ -42675,11 +44455,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     connectionUuid_ = value;
+                    onChanged();
                 } else {
                     connectionUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -42689,11 +44468,10 @@ public final class ContextOuterClass {
             public Builder setConnectionUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (connectionUuidBuilder_ == null) {
                     connectionUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     connectionUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -42702,16 +44480,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeConnectionUuid(context.ContextOuterClass.Uuid value) {
                 if (connectionUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && connectionUuid_ != null && connectionUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getConnectionUuidBuilder().mergeFrom(value);
+                    if (connectionUuid_ != null) {
+                        connectionUuid_ = context.ContextOuterClass.Uuid.newBuilder(connectionUuid_).mergeFrom(value).buildPartial();
                     } else {
                         connectionUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     connectionUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -42719,13 +44496,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid connection_uuid = 1;</code>
              */
             public Builder clearConnectionUuid() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                connectionUuid_ = null;
-                if (connectionUuidBuilder_ != null) {
-                    connectionUuidBuilder_.dispose();
+                if (connectionUuidBuilder_ == null) {
+                    connectionUuid_ = null;
+                    onChanged();
+                } else {
+                    connectionUuid_ = null;
                     connectionUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -42733,7 +44510,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid connection_uuid = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getConnectionUuidBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getConnectionUuidFieldBuilder().getBuilder();
             }
@@ -42787,17 +44563,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionId(input, extensionRegistry);
             }
         };
 
@@ -42855,6 +44621,50 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L0();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionSettings_L0(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                lspSymbolicName_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
         }
@@ -42866,8 +44676,7 @@ public final class ContextOuterClass {
 
         public static final int LSP_SYMBOLIC_NAME_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object lspSymbolicName_ = "";
+        private volatile java.lang.Object lspSymbolicName_;
 
         /**
          * <code>string lsp_symbolic_name = 1;</code>
@@ -42917,10 +44726,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lspSymbolicName_)) {
+            if (!getLspSymbolicNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, lspSymbolicName_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -42929,10 +44738,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lspSymbolicName_)) {
+            if (!getLspSymbolicNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, lspSymbolicName_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -42948,7 +44757,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ConnectionSettings_L0 other = (context.ContextOuterClass.ConnectionSettings_L0) obj;
             if (!getLspSymbolicName().equals(other.getLspSymbolicName()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -42962,7 +44771,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + LSP_SYMBOLIC_NAME_FIELD_NUMBER;
             hash = (53 * hash) + getLspSymbolicName().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -43056,16 +44865,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L0.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 lspSymbolicName_ = "";
                 return this;
             }
@@ -43092,18 +44907,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L0 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L0 result = new context.ContextOuterClass.ConnectionSettings_L0(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.lspSymbolicName_ = lspSymbolicName_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L0 result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.lspSymbolicName_ = lspSymbolicName_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -43121,10 +44957,9 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getLspSymbolicName().isEmpty()) {
                     lspSymbolicName_ = other.lspSymbolicName_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -43136,47 +44971,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionSettings_L0 parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    lspSymbolicName_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L0) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private java.lang.Object lspSymbolicName_ = "";
 
             /**
@@ -43220,7 +45028,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 lspSymbolicName_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -43231,7 +45038,6 @@ public final class ContextOuterClass {
              */
             public Builder clearLspSymbolicName() {
                 lspSymbolicName_ = getDefaultInstance().getLspSymbolicName();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -43247,7 +45053,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 lspSymbolicName_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -43279,17 +45084,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L0 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionSettings_L0(input, extensionRegistry);
             }
         };
 
@@ -43384,6 +45179,76 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L2();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionSettings_L2(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                srcMacAddress_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                dstMacAddress_ = s;
+                                break;
+                            }
+                        case 24:
+                            {
+                                etherType_ = input.readUInt32();
+                                break;
+                            }
+                        case 32:
+                            {
+                                vlanId_ = input.readUInt32();
+                                break;
+                            }
+                        case 40:
+                            {
+                                mplsLabel_ = input.readUInt32();
+                                break;
+                            }
+                        case 48:
+                            {
+                                mplsTrafficClass_ = input.readUInt32();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
         }
@@ -43395,8 +45260,7 @@ public final class ContextOuterClass {
 
         public static final int SRC_MAC_ADDRESS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object srcMacAddress_ = "";
+        private volatile java.lang.Object srcMacAddress_;
 
         /**
          * <code>string src_mac_address = 1;</code>
@@ -43433,8 +45297,7 @@ public final class ContextOuterClass {
 
         public static final int DST_MAC_ADDRESS_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object dstMacAddress_ = "";
+        private volatile java.lang.Object dstMacAddress_;
 
         /**
          * <code>string dst_mac_address = 2;</code>
@@ -43471,7 +45334,7 @@ public final class ContextOuterClass {
 
         public static final int ETHER_TYPE_FIELD_NUMBER = 3;
 
-        private int etherType_ = 0;
+        private int etherType_;
 
         /**
          * <code>uint32 ether_type = 3;</code>
@@ -43484,7 +45347,7 @@ public final class ContextOuterClass {
 
         public static final int VLAN_ID_FIELD_NUMBER = 4;
 
-        private int vlanId_ = 0;
+        private int vlanId_;
 
         /**
          * <code>uint32 vlan_id = 4;</code>
@@ -43497,7 +45360,7 @@ public final class ContextOuterClass {
 
         public static final int MPLS_LABEL_FIELD_NUMBER = 5;
 
-        private int mplsLabel_ = 0;
+        private int mplsLabel_;
 
         /**
          * <code>uint32 mpls_label = 5;</code>
@@ -43510,7 +45373,7 @@ public final class ContextOuterClass {
 
         public static final int MPLS_TRAFFIC_CLASS_FIELD_NUMBER = 6;
 
-        private int mplsTrafficClass_ = 0;
+        private int mplsTrafficClass_;
 
         /**
          * <code>uint32 mpls_traffic_class = 6;</code>
@@ -43536,10 +45399,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcMacAddress_)) {
+            if (!getSrcMacAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcMacAddress_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstMacAddress_)) {
+            if (!getDstMacAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstMacAddress_);
             }
             if (etherType_ != 0) {
@@ -43554,7 +45417,7 @@ public final class ContextOuterClass {
             if (mplsTrafficClass_ != 0) {
                 output.writeUInt32(6, mplsTrafficClass_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -43563,10 +45426,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcMacAddress_)) {
+            if (!getSrcMacAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcMacAddress_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstMacAddress_)) {
+            if (!getDstMacAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstMacAddress_);
             }
             if (etherType_ != 0) {
@@ -43581,7 +45444,7 @@ public final class ContextOuterClass {
             if (mplsTrafficClass_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(6, mplsTrafficClass_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -43607,7 +45470,7 @@ public final class ContextOuterClass {
                 return false;
             if (getMplsTrafficClass() != other.getMplsTrafficClass())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -43631,7 +45494,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getMplsLabel();
             hash = (37 * hash) + MPLS_TRAFFIC_CLASS_FIELD_NUMBER;
             hash = (53 * hash) + getMplsTrafficClass();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -43725,16 +45588,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L2.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 srcMacAddress_ = "";
                 dstMacAddress_ = "";
                 etherType_ = 0;
@@ -43766,33 +45635,44 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L2 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L2 result = new context.ContextOuterClass.ConnectionSettings_L2(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.srcMacAddress_ = srcMacAddress_;
+                result.dstMacAddress_ = dstMacAddress_;
+                result.etherType_ = etherType_;
+                result.vlanId_ = vlanId_;
+                result.mplsLabel_ = mplsLabel_;
+                result.mplsTrafficClass_ = mplsTrafficClass_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L2 result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.srcMacAddress_ = srcMacAddress_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.dstMacAddress_ = dstMacAddress_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.etherType_ = etherType_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.vlanId_ = vlanId_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.mplsLabel_ = mplsLabel_;
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.mplsTrafficClass_ = mplsTrafficClass_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -43810,12 +45690,10 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getSrcMacAddress().isEmpty()) {
                     srcMacAddress_ = other.srcMacAddress_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getDstMacAddress().isEmpty()) {
                     dstMacAddress_ = other.dstMacAddress_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.getEtherType() != 0) {
@@ -43830,7 +45708,7 @@ public final class ContextOuterClass {
                 if (other.getMplsTrafficClass() != 0) {
                     setMplsTrafficClass(other.getMplsTrafficClass());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -43842,82 +45720,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionSettings_L2 parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    srcMacAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    dstMacAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 24:
-                                {
-                                    etherType_ = input.readUInt32();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    vlanId_ = input.readUInt32();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            case 40:
-                                {
-                                    mplsLabel_ = input.readUInt32();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 40
-                            case 48:
-                                {
-                                    mplsTrafficClass_ = input.readUInt32();
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 48
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L2) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private java.lang.Object srcMacAddress_ = "";
 
             /**
@@ -43961,7 +45777,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 srcMacAddress_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -43972,7 +45787,6 @@ public final class ContextOuterClass {
              */
             public Builder clearSrcMacAddress() {
                 srcMacAddress_ = getDefaultInstance().getSrcMacAddress();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -43988,7 +45802,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 srcMacAddress_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -44036,7 +45849,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 dstMacAddress_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -44047,7 +45859,6 @@ public final class ContextOuterClass {
              */
             public Builder clearDstMacAddress() {
                 dstMacAddress_ = getDefaultInstance().getDstMacAddress();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -44063,7 +45874,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 dstMacAddress_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -44086,7 +45896,6 @@ public final class ContextOuterClass {
              */
             public Builder setEtherType(int value) {
                 etherType_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -44096,7 +45905,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearEtherType() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 etherType_ = 0;
                 onChanged();
                 return this;
@@ -44120,7 +45928,6 @@ public final class ContextOuterClass {
              */
             public Builder setVlanId(int value) {
                 vlanId_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -44130,7 +45937,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearVlanId() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 vlanId_ = 0;
                 onChanged();
                 return this;
@@ -44154,7 +45960,6 @@ public final class ContextOuterClass {
              */
             public Builder setMplsLabel(int value) {
                 mplsLabel_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -44164,7 +45969,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearMplsLabel() {
-                bitField0_ = (bitField0_ & ~0x00000010);
                 mplsLabel_ = 0;
                 onChanged();
                 return this;
@@ -44188,7 +45992,6 @@ public final class ContextOuterClass {
              */
             public Builder setMplsTrafficClass(int value) {
                 mplsTrafficClass_ = value;
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return this;
             }
@@ -44198,7 +46001,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearMplsTrafficClass() {
-                bitField0_ = (bitField0_ & ~0x00000020);
                 mplsTrafficClass_ = 0;
                 onChanged();
                 return this;
@@ -44231,17 +46033,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L2 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionSettings_L2(input, extensionRegistry);
             }
         };
 
@@ -44330,6 +46122,71 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L3();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionSettings_L3(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                srcIpAddress_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                dstIpAddress_ = s;
+                                break;
+                            }
+                        case 24:
+                            {
+                                dscp_ = input.readUInt32();
+                                break;
+                            }
+                        case 32:
+                            {
+                                protocol_ = input.readUInt32();
+                                break;
+                            }
+                        case 40:
+                            {
+                                ttl_ = input.readUInt32();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
         }
@@ -44341,8 +46198,7 @@ public final class ContextOuterClass {
 
         public static final int SRC_IP_ADDRESS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object srcIpAddress_ = "";
+        private volatile java.lang.Object srcIpAddress_;
 
         /**
          * <code>string src_ip_address = 1;</code>
@@ -44379,8 +46235,7 @@ public final class ContextOuterClass {
 
         public static final int DST_IP_ADDRESS_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object dstIpAddress_ = "";
+        private volatile java.lang.Object dstIpAddress_;
 
         /**
          * <code>string dst_ip_address = 2;</code>
@@ -44417,7 +46272,7 @@ public final class ContextOuterClass {
 
         public static final int DSCP_FIELD_NUMBER = 3;
 
-        private int dscp_ = 0;
+        private int dscp_;
 
         /**
          * <code>uint32 dscp = 3;</code>
@@ -44430,7 +46285,7 @@ public final class ContextOuterClass {
 
         public static final int PROTOCOL_FIELD_NUMBER = 4;
 
-        private int protocol_ = 0;
+        private int protocol_;
 
         /**
          * <code>uint32 protocol = 4;</code>
@@ -44443,7 +46298,7 @@ public final class ContextOuterClass {
 
         public static final int TTL_FIELD_NUMBER = 5;
 
-        private int ttl_ = 0;
+        private int ttl_;
 
         /**
          * <code>uint32 ttl = 5;</code>
@@ -44469,10 +46324,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcIpAddress_)) {
+            if (!getSrcIpAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcIpAddress_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstIpAddress_)) {
+            if (!getDstIpAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstIpAddress_);
             }
             if (dscp_ != 0) {
@@ -44484,7 +46339,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 output.writeUInt32(5, ttl_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -44493,10 +46348,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcIpAddress_)) {
+            if (!getSrcIpAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcIpAddress_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstIpAddress_)) {
+            if (!getDstIpAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstIpAddress_);
             }
             if (dscp_ != 0) {
@@ -44508,7 +46363,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(5, ttl_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -44532,7 +46387,7 @@ public final class ContextOuterClass {
                 return false;
             if (getTtl() != other.getTtl())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -44554,7 +46409,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getProtocol();
             hash = (37 * hash) + TTL_FIELD_NUMBER;
             hash = (53 * hash) + getTtl();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -44648,16 +46503,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L3.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 srcIpAddress_ = "";
                 dstIpAddress_ = "";
                 dscp_ = 0;
@@ -44688,30 +46549,43 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L3 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L3 result = new context.ContextOuterClass.ConnectionSettings_L3(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.srcIpAddress_ = srcIpAddress_;
+                result.dstIpAddress_ = dstIpAddress_;
+                result.dscp_ = dscp_;
+                result.protocol_ = protocol_;
+                result.ttl_ = ttl_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L3 result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.srcIpAddress_ = srcIpAddress_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.dstIpAddress_ = dstIpAddress_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.dscp_ = dscp_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.protocol_ = protocol_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.ttl_ = ttl_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -44729,12 +46603,10 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getSrcIpAddress().isEmpty()) {
                     srcIpAddress_ = other.srcIpAddress_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getDstIpAddress().isEmpty()) {
                     dstIpAddress_ = other.dstIpAddress_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.getDscp() != 0) {
@@ -44746,7 +46618,7 @@ public final class ContextOuterClass {
                 if (other.getTtl() != 0) {
                     setTtl(other.getTtl());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -44758,75 +46630,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionSettings_L3 parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    srcIpAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    dstIpAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 24:
-                                {
-                                    dscp_ = input.readUInt32();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    protocol_ = input.readUInt32();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            case 40:
-                                {
-                                    ttl_ = input.readUInt32();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 40
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L3) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private java.lang.Object srcIpAddress_ = "";
 
             /**
@@ -44870,7 +46687,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 srcIpAddress_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -44881,7 +46697,6 @@ public final class ContextOuterClass {
              */
             public Builder clearSrcIpAddress() {
                 srcIpAddress_ = getDefaultInstance().getSrcIpAddress();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -44897,7 +46712,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 srcIpAddress_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -44945,7 +46759,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 dstIpAddress_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -44956,7 +46769,6 @@ public final class ContextOuterClass {
              */
             public Builder clearDstIpAddress() {
                 dstIpAddress_ = getDefaultInstance().getDstIpAddress();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -44972,7 +46784,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 dstIpAddress_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -44995,7 +46806,6 @@ public final class ContextOuterClass {
              */
             public Builder setDscp(int value) {
                 dscp_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -45005,7 +46815,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDscp() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 dscp_ = 0;
                 onChanged();
                 return this;
@@ -45029,7 +46838,6 @@ public final class ContextOuterClass {
              */
             public Builder setProtocol(int value) {
                 protocol_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -45039,7 +46847,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearProtocol() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 protocol_ = 0;
                 onChanged();
                 return this;
@@ -45063,7 +46870,6 @@ public final class ContextOuterClass {
              */
             public Builder setTtl(int value) {
                 ttl_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -45073,7 +46879,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTtl() {
-                bitField0_ = (bitField0_ & ~0x00000010);
                 ttl_ = 0;
                 onChanged();
                 return this;
@@ -45106,17 +46911,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L3 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionSettings_L3(input, extensionRegistry);
             }
         };
 
@@ -45185,6 +46980,64 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L4();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionSettings_L4(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                srcPort_ = input.readUInt32();
+                                break;
+                            }
+                        case 16:
+                            {
+                                dstPort_ = input.readUInt32();
+                                break;
+                            }
+                        case 24:
+                            {
+                                tcpFlags_ = input.readUInt32();
+                                break;
+                            }
+                        case 32:
+                            {
+                                ttl_ = input.readUInt32();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
         }
@@ -45196,7 +47049,7 @@ public final class ContextOuterClass {
 
         public static final int SRC_PORT_FIELD_NUMBER = 1;
 
-        private int srcPort_ = 0;
+        private int srcPort_;
 
         /**
          * <code>uint32 src_port = 1;</code>
@@ -45209,7 +47062,7 @@ public final class ContextOuterClass {
 
         public static final int DST_PORT_FIELD_NUMBER = 2;
 
-        private int dstPort_ = 0;
+        private int dstPort_;
 
         /**
          * <code>uint32 dst_port = 2;</code>
@@ -45222,7 +47075,7 @@ public final class ContextOuterClass {
 
         public static final int TCP_FLAGS_FIELD_NUMBER = 3;
 
-        private int tcpFlags_ = 0;
+        private int tcpFlags_;
 
         /**
          * <code>uint32 tcp_flags = 3;</code>
@@ -45235,7 +47088,7 @@ public final class ContextOuterClass {
 
         public static final int TTL_FIELD_NUMBER = 4;
 
-        private int ttl_ = 0;
+        private int ttl_;
 
         /**
          * <code>uint32 ttl = 4;</code>
@@ -45273,7 +47126,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 output.writeUInt32(4, ttl_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -45294,7 +47147,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(4, ttl_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -45316,7 +47169,7 @@ public final class ContextOuterClass {
                 return false;
             if (getTtl() != other.getTtl())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -45336,7 +47189,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getTcpFlags();
             hash = (37 * hash) + TTL_FIELD_NUMBER;
             hash = (53 * hash) + getTtl();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -45430,16 +47283,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L4.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 srcPort_ = 0;
                 dstPort_ = 0;
                 tcpFlags_ = 0;
@@ -45469,27 +47328,42 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L4 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L4 result = new context.ContextOuterClass.ConnectionSettings_L4(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.srcPort_ = srcPort_;
+                result.dstPort_ = dstPort_;
+                result.tcpFlags_ = tcpFlags_;
+                result.ttl_ = ttl_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L4 result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.srcPort_ = srcPort_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.dstPort_ = dstPort_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.tcpFlags_ = tcpFlags_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.ttl_ = ttl_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -45517,7 +47391,7 @@ public final class ContextOuterClass {
                 if (other.getTtl() != 0) {
                     setTtl(other.getTtl());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -45529,68 +47403,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionSettings_L4 parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    srcPort_ = input.readUInt32();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 16:
-                                {
-                                    dstPort_ = input.readUInt32();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 24:
-                                {
-                                    tcpFlags_ = input.readUInt32();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    ttl_ = input.readUInt32();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L4) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int srcPort_;
 
             /**
@@ -45609,7 +47435,6 @@ public final class ContextOuterClass {
              */
             public Builder setSrcPort(int value) {
                 srcPort_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -45619,7 +47444,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearSrcPort() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 srcPort_ = 0;
                 onChanged();
                 return this;
@@ -45643,7 +47467,6 @@ public final class ContextOuterClass {
              */
             public Builder setDstPort(int value) {
                 dstPort_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -45653,7 +47476,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDstPort() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 dstPort_ = 0;
                 onChanged();
                 return this;
@@ -45677,7 +47499,6 @@ public final class ContextOuterClass {
              */
             public Builder setTcpFlags(int value) {
                 tcpFlags_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -45687,7 +47508,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTcpFlags() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 tcpFlags_ = 0;
                 onChanged();
                 return this;
@@ -45711,7 +47531,6 @@ public final class ContextOuterClass {
              */
             public Builder setTtl(int value) {
                 ttl_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -45721,7 +47540,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTtl() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 ttl_ = 0;
                 onChanged();
                 return this;
@@ -45754,17 +47572,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L4 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionSettings_L4(input, extensionRegistry);
             }
         };
 
@@ -45877,6 +47685,96 @@ public final class ContextOuterClass {
             return new ConnectionSettings();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionSettings(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ConnectionSettings_L0.Builder subBuilder = null;
+                                if (l0_ != null) {
+                                    subBuilder = l0_.toBuilder();
+                                }
+                                l0_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L0.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(l0_);
+                                    l0_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.ConnectionSettings_L2.Builder subBuilder = null;
+                                if (l2_ != null) {
+                                    subBuilder = l2_.toBuilder();
+                                }
+                                l2_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L2.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(l2_);
+                                    l2_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 26:
+                            {
+                                context.ContextOuterClass.ConnectionSettings_L3.Builder subBuilder = null;
+                                if (l3_ != null) {
+                                    subBuilder = l3_.toBuilder();
+                                }
+                                l3_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L3.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(l3_);
+                                    l3_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 34:
+                            {
+                                context.ContextOuterClass.ConnectionSettings_L4.Builder subBuilder = null;
+                                if (l4_ != null) {
+                                    subBuilder = l4_.toBuilder();
+                                }
+                                l4_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L4.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(l4_);
+                                    l4_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
         }
@@ -45913,7 +47811,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
-            return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
+            return getL0();
         }
 
         public static final int L2_FIELD_NUMBER = 2;
@@ -45943,7 +47841,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder() {
-            return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
+            return getL2();
         }
 
         public static final int L3_FIELD_NUMBER = 3;
@@ -45973,7 +47871,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
-            return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
+            return getL3();
         }
 
         public static final int L4_FIELD_NUMBER = 4;
@@ -46003,7 +47901,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
-            return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
+            return getL4();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -46033,7 +47931,7 @@ public final class ContextOuterClass {
             if (l4_ != null) {
                 output.writeMessage(4, getL4());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -46054,7 +47952,7 @@ public final class ContextOuterClass {
             if (l4_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getL4());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -46092,7 +47990,7 @@ public final class ContextOuterClass {
                 if (!getL4().equals(other.getL4()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -46120,7 +48018,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + L4_FIELD_NUMBER;
                 hash = (53 * hash) + getL4().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -46214,34 +48112,44 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                l0_ = null;
-                if (l0Builder_ != null) {
-                    l0Builder_.dispose();
+                if (l0Builder_ == null) {
+                    l0_ = null;
+                } else {
+                    l0_ = null;
                     l0Builder_ = null;
                 }
-                l2_ = null;
-                if (l2Builder_ != null) {
-                    l2Builder_.dispose();
+                if (l2Builder_ == null) {
+                    l2_ = null;
+                } else {
+                    l2_ = null;
                     l2Builder_ = null;
                 }
-                l3_ = null;
-                if (l3Builder_ != null) {
-                    l3Builder_.dispose();
+                if (l3Builder_ == null) {
+                    l3_ = null;
+                } else {
+                    l3_ = null;
                     l3Builder_ = null;
                 }
-                l4_ = null;
-                if (l4Builder_ != null) {
-                    l4Builder_.dispose();
+                if (l4Builder_ == null) {
+                    l4_ = null;
+                } else {
+                    l4_ = null;
                     l4Builder_ = null;
                 }
                 return this;
@@ -46269,27 +48177,58 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings buildPartial() {
                 context.ContextOuterClass.ConnectionSettings result = new context.ContextOuterClass.ConnectionSettings(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (l0Builder_ == null) {
+                    result.l0_ = l0_;
+                } else {
+                    result.l0_ = l0Builder_.build();
+                }
+                if (l2Builder_ == null) {
+                    result.l2_ = l2_;
+                } else {
+                    result.l2_ = l2Builder_.build();
+                }
+                if (l3Builder_ == null) {
+                    result.l3_ = l3_;
+                } else {
+                    result.l3_ = l3Builder_.build();
+                }
+                if (l4Builder_ == null) {
+                    result.l4_ = l4_;
+                } else {
+                    result.l4_ = l4Builder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionSettings result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.l0_ = l0Builder_ == null ? l0_ : l0Builder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.l2_ = l2Builder_ == null ? l2_ : l2Builder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.l3_ = l3Builder_ == null ? l3_ : l3Builder_.build();
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.l4_ = l4Builder_ == null ? l4_ : l4Builder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -46317,7 +48256,7 @@ public final class ContextOuterClass {
                 if (other.hasL4()) {
                     mergeL4(other.getL4());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -46329,68 +48268,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionSettings parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getL0FieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getL2FieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getL3FieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    input.readMessage(getL4FieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionSettings) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.ConnectionSettings_L0 l0_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder> l0Builder_;
@@ -46400,7 +48291,7 @@ public final class ContextOuterClass {
              * @return Whether the l0 field is set.
              */
             public boolean hasL0() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return l0Builder_ != null || l0_ != null;
             }
 
             /**
@@ -46424,11 +48315,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l0_ = value;
+                    onChanged();
                 } else {
                     l0Builder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -46438,11 +48328,10 @@ public final class ContextOuterClass {
             public Builder setL0(context.ContextOuterClass.ConnectionSettings_L0.Builder builderForValue) {
                 if (l0Builder_ == null) {
                     l0_ = builderForValue.build();
+                    onChanged();
                 } else {
                     l0Builder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -46451,16 +48340,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
                 if (l0Builder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && l0_ != null && l0_ != context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance()) {
-                        getL0Builder().mergeFrom(value);
+                    if (l0_ != null) {
+                        l0_ = context.ContextOuterClass.ConnectionSettings_L0.newBuilder(l0_).mergeFrom(value).buildPartial();
                     } else {
                         l0_ = value;
                     }
+                    onChanged();
                 } else {
                     l0Builder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -46468,13 +48356,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
              */
             public Builder clearL0() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                l0_ = null;
-                if (l0Builder_ != null) {
-                    l0Builder_.dispose();
+                if (l0Builder_ == null) {
+                    l0_ = null;
+                    onChanged();
+                } else {
+                    l0_ = null;
                     l0Builder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -46482,7 +48370,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
              */
             public context.ContextOuterClass.ConnectionSettings_L0.Builder getL0Builder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getL0FieldBuilder().getBuilder();
             }
@@ -46518,7 +48405,7 @@ public final class ContextOuterClass {
              * @return Whether the l2 field is set.
              */
             public boolean hasL2() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return l2Builder_ != null || l2_ != null;
             }
 
             /**
@@ -46542,11 +48429,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l2_ = value;
+                    onChanged();
                 } else {
                     l2Builder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -46556,11 +48442,10 @@ public final class ContextOuterClass {
             public Builder setL2(context.ContextOuterClass.ConnectionSettings_L2.Builder builderForValue) {
                 if (l2Builder_ == null) {
                     l2_ = builderForValue.build();
+                    onChanged();
                 } else {
                     l2Builder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -46569,16 +48454,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
                 if (l2Builder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && l2_ != null && l2_ != context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance()) {
-                        getL2Builder().mergeFrom(value);
+                    if (l2_ != null) {
+                        l2_ = context.ContextOuterClass.ConnectionSettings_L2.newBuilder(l2_).mergeFrom(value).buildPartial();
                     } else {
                         l2_ = value;
                     }
+                    onChanged();
                 } else {
                     l2Builder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -46586,13 +48470,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
              */
             public Builder clearL2() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                l2_ = null;
-                if (l2Builder_ != null) {
-                    l2Builder_.dispose();
+                if (l2Builder_ == null) {
+                    l2_ = null;
+                    onChanged();
+                } else {
+                    l2_ = null;
                     l2Builder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -46600,7 +48484,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
              */
             public context.ContextOuterClass.ConnectionSettings_L2.Builder getL2Builder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getL2FieldBuilder().getBuilder();
             }
@@ -46636,7 +48519,7 @@ public final class ContextOuterClass {
              * @return Whether the l3 field is set.
              */
             public boolean hasL3() {
-                return ((bitField0_ & 0x00000004) != 0);
+                return l3Builder_ != null || l3_ != null;
             }
 
             /**
@@ -46660,11 +48543,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l3_ = value;
+                    onChanged();
                 } else {
                     l3Builder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -46674,11 +48556,10 @@ public final class ContextOuterClass {
             public Builder setL3(context.ContextOuterClass.ConnectionSettings_L3.Builder builderForValue) {
                 if (l3Builder_ == null) {
                     l3_ = builderForValue.build();
+                    onChanged();
                 } else {
                     l3Builder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -46687,16 +48568,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
                 if (l3Builder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0) && l3_ != null && l3_ != context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance()) {
-                        getL3Builder().mergeFrom(value);
+                    if (l3_ != null) {
+                        l3_ = context.ContextOuterClass.ConnectionSettings_L3.newBuilder(l3_).mergeFrom(value).buildPartial();
                     } else {
                         l3_ = value;
                     }
+                    onChanged();
                 } else {
                     l3Builder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -46704,13 +48584,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
              */
             public Builder clearL3() {
-                bitField0_ = (bitField0_ & ~0x00000004);
-                l3_ = null;
-                if (l3Builder_ != null) {
-                    l3Builder_.dispose();
+                if (l3Builder_ == null) {
+                    l3_ = null;
+                    onChanged();
+                } else {
+                    l3_ = null;
                     l3Builder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -46718,7 +48598,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
              */
             public context.ContextOuterClass.ConnectionSettings_L3.Builder getL3Builder() {
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return getL3FieldBuilder().getBuilder();
             }
@@ -46754,7 +48633,7 @@ public final class ContextOuterClass {
              * @return Whether the l4 field is set.
              */
             public boolean hasL4() {
-                return ((bitField0_ & 0x00000008) != 0);
+                return l4Builder_ != null || l4_ != null;
             }
 
             /**
@@ -46778,11 +48657,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l4_ = value;
+                    onChanged();
                 } else {
                     l4Builder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -46792,11 +48670,10 @@ public final class ContextOuterClass {
             public Builder setL4(context.ContextOuterClass.ConnectionSettings_L4.Builder builderForValue) {
                 if (l4Builder_ == null) {
                     l4_ = builderForValue.build();
+                    onChanged();
                 } else {
                     l4Builder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -46805,16 +48682,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
                 if (l4Builder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0) && l4_ != null && l4_ != context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance()) {
-                        getL4Builder().mergeFrom(value);
+                    if (l4_ != null) {
+                        l4_ = context.ContextOuterClass.ConnectionSettings_L4.newBuilder(l4_).mergeFrom(value).buildPartial();
                     } else {
                         l4_ = value;
                     }
+                    onChanged();
                 } else {
                     l4Builder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -46822,13 +48698,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
              */
             public Builder clearL4() {
-                bitField0_ = (bitField0_ & ~0x00000008);
-                l4_ = null;
-                if (l4Builder_ != null) {
-                    l4Builder_.dispose();
+                if (l4Builder_ == null) {
+                    l4_ = null;
+                    onChanged();
+                } else {
+                    l4_ = null;
                     l4Builder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -46836,7 +48712,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
              */
             public context.ContextOuterClass.ConnectionSettings_L4.Builder getL4Builder() {
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return getL4FieldBuilder().getBuilder();
             }
@@ -46890,17 +48765,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionSettings(input, extensionRegistry);
             }
         };
 
@@ -47048,6 +48913,108 @@ public final class ContextOuterClass {
             return new Connection();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Connection(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
+                                if (connectionId_ != null) {
+                                    subBuilder = connectionId_.toBuilder();
+                                }
+                                connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(connectionId_);
+                                    connectionId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
+                                if (serviceId_ != null) {
+                                    subBuilder = serviceId_.toBuilder();
+                                }
+                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceId_);
+                                    serviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                pathHopsEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                subServiceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 42:
+                            {
+                                context.ContextOuterClass.ConnectionSettings.Builder subBuilder = null;
+                                if (settings_ != null) {
+                                    subBuilder = settings_.toBuilder();
+                                }
+                                settings_ = input.readMessage(context.ContextOuterClass.ConnectionSettings.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(settings_);
+                                    settings_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Connection_descriptor;
         }
@@ -47084,7 +49051,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+            return getConnectionId();
         }
 
         public static final int SERVICE_ID_FIELD_NUMBER = 2;
@@ -47114,12 +49081,11 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+            return getServiceId();
         }
 
         public static final int PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_;
 
         /**
@@ -47164,7 +49130,6 @@ public final class ContextOuterClass {
 
         public static final int SUB_SERVICE_IDS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_;
 
         /**
@@ -47234,7 +49199,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
-            return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
+            return getSettings();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -47267,7 +49232,7 @@ public final class ContextOuterClass {
             if (settings_ != null) {
                 output.writeMessage(5, getSettings());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -47291,7 +49256,7 @@ public final class ContextOuterClass {
             if (settings_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getSettings());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -47327,7 +49292,7 @@ public final class ContextOuterClass {
                 if (!getSettings().equals(other.getSettings()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -47359,7 +49324,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SETTINGS_FIELD_NUMBER;
                 hash = (53 * hash) + getSettings().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -47453,43 +49418,52 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Connection.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getPathHopsEndpointIdsFieldBuilder();
+                    getSubServiceIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                connectionId_ = null;
-                if (connectionIdBuilder_ != null) {
-                    connectionIdBuilder_.dispose();
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = null;
+                } else {
+                    connectionId_ = null;
                     connectionIdBuilder_ = null;
                 }
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
                 if (pathHopsEndpointIdsBuilder_ == null) {
                     pathHopsEndpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    pathHopsEndpointIds_ = null;
                     pathHopsEndpointIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 if (subServiceIdsBuilder_ == null) {
                     subServiceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    subServiceIds_ = null;
                     subServiceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
-                settings_ = null;
-                if (settingsBuilder_ != null) {
-                    settingsBuilder_.dispose();
+                if (settingsBuilder_ == null) {
+                    settings_ = null;
+                } else {
+                    settings_ = null;
                     settingsBuilder_ = null;
                 }
                 return this;
@@ -47517,46 +49491,72 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Connection buildPartial() {
                 context.ContextOuterClass.Connection result = new context.ContextOuterClass.Connection(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (connectionIdBuilder_ == null) {
+                    result.connectionId_ = connectionId_;
+                } else {
+                    result.connectionId_ = connectionIdBuilder_.build();
+                }
+                if (serviceIdBuilder_ == null) {
+                    result.serviceId_ = serviceId_;
+                } else {
+                    result.serviceId_ = serviceIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Connection result) {
                 if (pathHopsEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.pathHopsEndpointIds_ = pathHopsEndpointIds_;
                 } else {
                     result.pathHopsEndpointIds_ = pathHopsEndpointIdsBuilder_.build();
                 }
                 if (subServiceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.subServiceIds_ = subServiceIds_;
                 } else {
                     result.subServiceIds_ = subServiceIdsBuilder_.build();
                 }
+                if (settingsBuilder_ == null) {
+                    result.settings_ = settings_;
+                } else {
+                    result.settings_ = settingsBuilder_.build();
+                }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Connection result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.settings_ = settingsBuilder_ == null ? settings_ : settingsBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -47582,7 +49582,7 @@ public final class ContextOuterClass {
                     if (!other.pathHopsEndpointIds_.isEmpty()) {
                         if (pathHopsEndpointIds_.isEmpty()) {
                             pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensurePathHopsEndpointIdsIsMutable();
                             pathHopsEndpointIds_.addAll(other.pathHopsEndpointIds_);
@@ -47595,7 +49595,7 @@ public final class ContextOuterClass {
                             pathHopsEndpointIdsBuilder_.dispose();
                             pathHopsEndpointIdsBuilder_ = null;
                             pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             pathHopsEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getPathHopsEndpointIdsFieldBuilder() : null;
                         } else {
                             pathHopsEndpointIdsBuilder_.addAllMessages(other.pathHopsEndpointIds_);
@@ -47606,7 +49606,7 @@ public final class ContextOuterClass {
                     if (!other.subServiceIds_.isEmpty()) {
                         if (subServiceIds_.isEmpty()) {
                             subServiceIds_ = other.subServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureSubServiceIdsIsMutable();
                             subServiceIds_.addAll(other.subServiceIds_);
@@ -47619,7 +49619,7 @@ public final class ContextOuterClass {
                             subServiceIdsBuilder_.dispose();
                             subServiceIdsBuilder_ = null;
                             subServiceIds_ = other.subServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             subServiceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSubServiceIdsFieldBuilder() : null;
                         } else {
                             subServiceIdsBuilder_.addAllMessages(other.subServiceIds_);
@@ -47629,7 +49629,7 @@ public final class ContextOuterClass {
                 if (other.hasSettings()) {
                     mergeSettings(other.getSettings());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -47641,80 +49641,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Connection parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                    if (pathHopsEndpointIdsBuilder_ == null) {
-                                        ensurePathHopsEndpointIdsIsMutable();
-                                        pathHopsEndpointIds_.add(m);
-                                    } else {
-                                        pathHopsEndpointIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                    if (subServiceIdsBuilder_ == null) {
-                                        ensureSubServiceIdsIsMutable();
-                                        subServiceIds_.add(m);
-                                    } else {
-                                        subServiceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    input.readMessage(getSettingsFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Connection) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -47729,7 +49666,7 @@ public final class ContextOuterClass {
              * @return Whether the connectionId field is set.
              */
             public boolean hasConnectionId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return connectionIdBuilder_ != null || connectionId_ != null;
             }
 
             /**
@@ -47753,11 +49690,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     connectionId_ = value;
+                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -47767,11 +49703,10 @@ public final class ContextOuterClass {
             public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                 if (connectionIdBuilder_ == null) {
                     connectionId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -47780,16 +49715,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
                 if (connectionIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
-                        getConnectionIdBuilder().mergeFrom(value);
+                    if (connectionId_ != null) {
+                        connectionId_ = context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
                     } else {
                         connectionId_ = value;
                     }
+                    onChanged();
                 } else {
                     connectionIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -47797,13 +49731,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionId connection_id = 1;</code>
              */
             public Builder clearConnectionId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                connectionId_ = null;
-                if (connectionIdBuilder_ != null) {
-                    connectionIdBuilder_.dispose();
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = null;
+                    onChanged();
+                } else {
+                    connectionId_ = null;
                     connectionIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -47811,7 +49745,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionId connection_id = 1;</code>
              */
             public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getConnectionIdFieldBuilder().getBuilder();
             }
@@ -47847,7 +49780,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return serviceIdBuilder_ != null || serviceId_ != null;
             }
 
             /**
@@ -47871,11 +49804,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -47885,11 +49817,10 @@ public final class ContextOuterClass {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -47898,16 +49829,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
-                        getServiceIdBuilder().mergeFrom(value);
+                    if (serviceId_ != null) {
+                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
                     } else {
                         serviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -47915,13 +49845,13 @@ public final class ContextOuterClass {
              * <code>.context.ServiceId service_id = 2;</code>
              */
             public Builder clearServiceId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                    onChanged();
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -47929,7 +49859,6 @@ public final class ContextOuterClass {
              * <code>.context.ServiceId service_id = 2;</code>
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -47959,9 +49888,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensurePathHopsEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(pathHopsEndpointIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -48113,7 +50042,7 @@ public final class ContextOuterClass {
             public Builder clearPathHopsEndpointIds() {
                 if (pathHopsEndpointIdsBuilder_ == null) {
                     pathHopsEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     pathHopsEndpointIdsBuilder_.clear();
@@ -48187,7 +50116,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getPathHopsEndpointIdsFieldBuilder() {
                 if (pathHopsEndpointIdsBuilder_ == null) {
-                    pathHopsEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(pathHopsEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    pathHopsEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(pathHopsEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     pathHopsEndpointIds_ = null;
                 }
                 return pathHopsEndpointIdsBuilder_;
@@ -48196,9 +50125,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_ = java.util.Collections.emptyList();
 
             private void ensureSubServiceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(subServiceIds_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -48350,7 +50279,7 @@ public final class ContextOuterClass {
             public Builder clearSubServiceIds() {
                 if (subServiceIdsBuilder_ == null) {
                     subServiceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     subServiceIdsBuilder_.clear();
@@ -48424,7 +50353,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getSubServiceIdsFieldBuilder() {
                 if (subServiceIdsBuilder_ == null) {
-                    subServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(subServiceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    subServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(subServiceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     subServiceIds_ = null;
                 }
                 return subServiceIdsBuilder_;
@@ -48439,7 +50368,7 @@ public final class ContextOuterClass {
              * @return Whether the settings field is set.
              */
             public boolean hasSettings() {
-                return ((bitField0_ & 0x00000010) != 0);
+                return settingsBuilder_ != null || settings_ != null;
             }
 
             /**
@@ -48463,11 +50392,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     settings_ = value;
+                    onChanged();
                 } else {
                     settingsBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -48477,11 +50405,10 @@ public final class ContextOuterClass {
             public Builder setSettings(context.ContextOuterClass.ConnectionSettings.Builder builderForValue) {
                 if (settingsBuilder_ == null) {
                     settings_ = builderForValue.build();
+                    onChanged();
                 } else {
                     settingsBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -48490,16 +50417,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSettings(context.ContextOuterClass.ConnectionSettings value) {
                 if (settingsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0) && settings_ != null && settings_ != context.ContextOuterClass.ConnectionSettings.getDefaultInstance()) {
-                        getSettingsBuilder().mergeFrom(value);
+                    if (settings_ != null) {
+                        settings_ = context.ContextOuterClass.ConnectionSettings.newBuilder(settings_).mergeFrom(value).buildPartial();
                     } else {
                         settings_ = value;
                     }
+                    onChanged();
                 } else {
                     settingsBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -48507,13 +50433,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings settings = 5;</code>
              */
             public Builder clearSettings() {
-                bitField0_ = (bitField0_ & ~0x00000010);
-                settings_ = null;
-                if (settingsBuilder_ != null) {
-                    settingsBuilder_.dispose();
+                if (settingsBuilder_ == null) {
+                    settings_ = null;
+                    onChanged();
+                } else {
+                    settings_ = null;
                     settingsBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -48521,7 +50447,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings settings = 5;</code>
              */
             public context.ContextOuterClass.ConnectionSettings.Builder getSettingsBuilder() {
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return getSettingsFieldBuilder().getBuilder();
             }
@@ -48575,17 +50500,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Connection parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Connection(input, extensionRegistry);
             }
         };
 
@@ -48656,6 +50571,57 @@ public final class ContextOuterClass {
             return new ConnectionIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    connectionIds_ = new java.util.ArrayList<context.ContextOuterClass.ConnectionId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                connectionIds_.add(input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
         }
@@ -48667,7 +50633,6 @@ public final class ContextOuterClass {
 
         public static final int CONNECTION_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ConnectionId> connectionIds_;
 
         /**
@@ -48728,7 +50693,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connectionIds_.size(); i++) {
                 output.writeMessage(1, connectionIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -48740,7 +50705,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connectionIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, connectionIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -48756,7 +50721,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ConnectionIdList other = (context.ContextOuterClass.ConnectionIdList) obj;
             if (!getConnectionIdsList().equals(other.getConnectionIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -48772,7 +50737,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTION_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -48866,23 +50831,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getConnectionIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (connectionIdsBuilder_ == null) {
                     connectionIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    connectionIds_ = null;
                     connectionIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -48908,15 +50879,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionIdList buildPartial() {
                 context.ContextOuterClass.ConnectionIdList result = new context.ContextOuterClass.ConnectionIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ConnectionIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (connectionIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
@@ -48926,10 +50889,38 @@ public final class ContextOuterClass {
                 } else {
                     result.connectionIds_ = connectionIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -48969,7 +50960,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -48981,47 +50972,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.ConnectionId m = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
-                                    if (connectionIdsBuilder_ == null) {
-                                        ensureConnectionIdsIsMutable();
-                                        connectionIds_.add(m);
-                                    } else {
-                                        connectionIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -49291,17 +51252,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionIdList(input, extensionRegistry);
             }
         };
 
@@ -49372,6 +51323,57 @@ public final class ContextOuterClass {
             return new ConnectionList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    connections_ = new java.util.ArrayList<context.ContextOuterClass.Connection>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                connections_.add(input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    connections_ = java.util.Collections.unmodifiableList(connections_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
         }
@@ -49383,7 +51385,6 @@ public final class ContextOuterClass {
 
         public static final int CONNECTIONS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Connection> connections_;
 
         /**
@@ -49444,7 +51445,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connections_.size(); i++) {
                 output.writeMessage(1, connections_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -49456,7 +51457,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connections_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, connections_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -49472,7 +51473,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ConnectionList other = (context.ContextOuterClass.ConnectionList) obj;
             if (!getConnectionsList().equals(other.getConnectionsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -49488,7 +51489,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTIONS_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -49582,23 +51583,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getConnectionsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (connectionsBuilder_ == null) {
                     connections_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    connections_ = null;
                     connectionsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -49624,15 +51631,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionList buildPartial() {
                 context.ContextOuterClass.ConnectionList result = new context.ContextOuterClass.ConnectionList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ConnectionList result) {
+                int from_bitField0_ = bitField0_;
                 if (connectionsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         connections_ = java.util.Collections.unmodifiableList(connections_);
@@ -49642,10 +51641,38 @@ public final class ContextOuterClass {
                 } else {
                     result.connections_ = connectionsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -49685,7 +51712,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -49697,47 +51724,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Connection m = input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry);
-                                    if (connectionsBuilder_ == null) {
-                                        ensureConnectionsIsMutable();
-                                        connections_.add(m);
-                                    } else {
-                                        connectionsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -50007,17 +52004,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionList(input, extensionRegistry);
             }
         };
 
@@ -50096,6 +52083,70 @@ public final class ContextOuterClass {
             return new ConnectionEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
+                                if (connectionId_ != null) {
+                                    subBuilder = connectionId_.toBuilder();
+                                }
+                                connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(connectionId_);
+                                    connectionId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
         }
@@ -50132,7 +52183,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int CONNECTION_ID_FIELD_NUMBER = 2;
@@ -50162,7 +52213,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+            return getConnectionId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -50186,7 +52237,7 @@ public final class ContextOuterClass {
             if (connectionId_ != null) {
                 output.writeMessage(2, getConnectionId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -50201,7 +52252,7 @@ public final class ContextOuterClass {
             if (connectionId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getConnectionId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -50227,7 +52278,7 @@ public final class ContextOuterClass {
                 if (!getConnectionId().equals(other.getConnectionId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -50247,7 +52298,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -50341,24 +52392,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                connectionId_ = null;
-                if (connectionIdBuilder_ != null) {
-                    connectionIdBuilder_.dispose();
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = null;
+                } else {
+                    connectionId_ = null;
                     connectionIdBuilder_ = null;
                 }
                 return this;
@@ -50386,21 +52445,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionEvent buildPartial() {
                 context.ContextOuterClass.ConnectionEvent result = new context.ContextOuterClass.ConnectionEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (connectionIdBuilder_ == null) {
+                    result.connectionId_ = connectionId_;
+                } else {
+                    result.connectionId_ = connectionIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -50422,7 +52508,7 @@ public final class ContextOuterClass {
                 if (other.hasConnectionId()) {
                     mergeConnectionId(other.getConnectionId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -50434,54 +52520,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -50491,7 +52543,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -50515,11 +52567,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -50529,11 +52580,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -50542,16 +52592,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -50559,13 +52608,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -50573,7 +52622,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -50609,7 +52657,7 @@ public final class ContextOuterClass {
              * @return Whether the connectionId field is set.
              */
             public boolean hasConnectionId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return connectionIdBuilder_ != null || connectionId_ != null;
             }
 
             /**
@@ -50633,11 +52681,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     connectionId_ = value;
+                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -50647,11 +52694,10 @@ public final class ContextOuterClass {
             public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                 if (connectionIdBuilder_ == null) {
                     connectionId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -50660,16 +52706,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
                 if (connectionIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
-                        getConnectionIdBuilder().mergeFrom(value);
+                    if (connectionId_ != null) {
+                        connectionId_ = context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
                     } else {
                         connectionId_ = value;
                     }
+                    onChanged();
                 } else {
                     connectionIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -50677,13 +52722,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionId connection_id = 2;</code>
              */
             public Builder clearConnectionId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                connectionId_ = null;
-                if (connectionIdBuilder_ != null) {
-                    connectionIdBuilder_.dispose();
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = null;
+                    onChanged();
+                } else {
+                    connectionId_ = null;
                     connectionIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -50691,7 +52736,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionId connection_id = 2;</code>
              */
             public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getConnectionIdFieldBuilder().getBuilder();
             }
@@ -50745,17 +52789,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionEvent(input, extensionRegistry);
             }
         };
 
@@ -50855,6 +52889,83 @@ public final class ContextOuterClass {
             return new EndPointId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private EndPointId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.TopologyId.Builder subBuilder = null;
+                                if (topologyId_ != null) {
+                                    subBuilder = topologyId_.toBuilder();
+                                }
+                                topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(topologyId_);
+                                    topologyId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+                                if (deviceId_ != null) {
+                                    subBuilder = deviceId_.toBuilder();
+                                }
+                                deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceId_);
+                                    deviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 26:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (endpointUuid_ != null) {
+                                    subBuilder = endpointUuid_.toBuilder();
+                                }
+                                endpointUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointUuid_);
+                                    endpointUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
         }
@@ -50891,7 +53002,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+            return getTopologyId();
         }
 
         public static final int DEVICE_ID_FIELD_NUMBER = 2;
@@ -50921,7 +53032,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+            return getDeviceId();
         }
 
         public static final int ENDPOINT_UUID_FIELD_NUMBER = 3;
@@ -50951,7 +53062,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
-            return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
+            return getEndpointUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -50978,7 +53089,7 @@ public final class ContextOuterClass {
             if (endpointUuid_ != null) {
                 output.writeMessage(3, getEndpointUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -50996,7 +53107,7 @@ public final class ContextOuterClass {
             if (endpointUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getEndpointUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -51028,7 +53139,7 @@ public final class ContextOuterClass {
                 if (!getEndpointUuid().equals(other.getEndpointUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -51052,7 +53163,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -51150,29 +53261,38 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                endpointUuid_ = null;
-                if (endpointUuidBuilder_ != null) {
-                    endpointUuidBuilder_.dispose();
+                if (endpointUuidBuilder_ == null) {
+                    endpointUuid_ = null;
+                } else {
+                    endpointUuid_ = null;
                     endpointUuidBuilder_ = null;
                 }
                 return this;
@@ -51200,24 +53320,53 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointId buildPartial() {
                 context.ContextOuterClass.EndPointId result = new context.ContextOuterClass.EndPointId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (topologyIdBuilder_ == null) {
+                    result.topologyId_ = topologyId_;
+                } else {
+                    result.topologyId_ = topologyIdBuilder_.build();
+                }
+                if (deviceIdBuilder_ == null) {
+                    result.deviceId_ = deviceId_;
+                } else {
+                    result.deviceId_ = deviceIdBuilder_.build();
+                }
+                if (endpointUuidBuilder_ == null) {
+                    result.endpointUuid_ = endpointUuid_;
+                } else {
+                    result.endpointUuid_ = endpointUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.EndPointId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.endpointUuid_ = endpointUuidBuilder_ == null ? endpointUuid_ : endpointUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -51242,7 +53391,7 @@ public final class ContextOuterClass {
                 if (other.hasEndpointUuid()) {
                     mergeEndpointUuid(other.getEndpointUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -51254,61 +53403,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.EndPointId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getEndpointUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.EndPointId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.TopologyId topologyId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
@@ -51318,7 +53426,7 @@ public final class ContextOuterClass {
              * @return Whether the topologyId field is set.
              */
             public boolean hasTopologyId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return topologyIdBuilder_ != null || topologyId_ != null;
             }
 
             /**
@@ -51342,11 +53450,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     topologyId_ = value;
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -51356,11 +53463,10 @@ public final class ContextOuterClass {
             public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                 if (topologyIdBuilder_ == null) {
                     topologyId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -51369,16 +53475,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                 if (topologyIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
-                        getTopologyIdBuilder().mergeFrom(value);
+                    if (topologyId_ != null) {
+                        topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
                     } else {
                         topologyId_ = value;
                     }
+                    onChanged();
                 } else {
                     topologyIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -51386,13 +53491,13 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 1;</code>
              */
             public Builder clearTopologyId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                    onChanged();
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -51400,7 +53505,6 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 1;</code>
              */
             public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTopologyIdFieldBuilder().getBuilder();
             }
@@ -51436,7 +53540,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceId field is set.
              */
             public boolean hasDeviceId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return deviceIdBuilder_ != null || deviceId_ != null;
             }
 
             /**
@@ -51460,11 +53564,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceId_ = value;
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -51474,11 +53577,10 @@ public final class ContextOuterClass {
             public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (deviceIdBuilder_ == null) {
                     deviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -51487,16 +53589,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                 if (deviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
-                        getDeviceIdBuilder().mergeFrom(value);
+                    if (deviceId_ != null) {
+                        deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
                     } else {
                         deviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -51504,13 +53605,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId device_id = 2;</code>
              */
             public Builder clearDeviceId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                    onChanged();
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -51518,7 +53619,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId device_id = 2;</code>
              */
             public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getDeviceIdFieldBuilder().getBuilder();
             }
@@ -51554,7 +53654,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointUuid field is set.
              */
             public boolean hasEndpointUuid() {
-                return ((bitField0_ & 0x00000004) != 0);
+                return endpointUuidBuilder_ != null || endpointUuid_ != null;
             }
 
             /**
@@ -51578,11 +53678,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointUuid_ = value;
+                    onChanged();
                 } else {
                     endpointUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -51592,11 +53691,10 @@ public final class ContextOuterClass {
             public Builder setEndpointUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (endpointUuidBuilder_ == null) {
                     endpointUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -51605,16 +53703,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointUuid(context.ContextOuterClass.Uuid value) {
                 if (endpointUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0) && endpointUuid_ != null && endpointUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getEndpointUuidBuilder().mergeFrom(value);
+                    if (endpointUuid_ != null) {
+                        endpointUuid_ = context.ContextOuterClass.Uuid.newBuilder(endpointUuid_).mergeFrom(value).buildPartial();
                     } else {
                         endpointUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -51622,13 +53719,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid endpoint_uuid = 3;</code>
              */
             public Builder clearEndpointUuid() {
-                bitField0_ = (bitField0_ & ~0x00000004);
-                endpointUuid_ = null;
-                if (endpointUuidBuilder_ != null) {
-                    endpointUuidBuilder_.dispose();
+                if (endpointUuidBuilder_ == null) {
+                    endpointUuid_ = null;
+                    onChanged();
+                } else {
+                    endpointUuid_ = null;
                     endpointUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -51636,7 +53733,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid endpoint_uuid = 3;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getEndpointUuidBuilder() {
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return getEndpointUuidFieldBuilder().getBuilder();
             }
@@ -51690,17 +53786,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new EndPointId(input, extensionRegistry);
             }
         };
 
@@ -51838,6 +53924,111 @@ public final class ContextOuterClass {
             return new EndPoint();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private EndPoint(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
+                                if (endpointId_ != null) {
+                                    subBuilder = endpointId_.toBuilder();
+                                }
+                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointId_);
+                                    endpointId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                endpointType_ = s;
+                                break;
+                            }
+                        case 32:
+                            {
+                                int rawValue = input.readEnum();
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                kpiSampleTypes_.add(rawValue);
+                                break;
+                            }
+                        case 34:
+                            {
+                                int length = input.readRawVarint32();
+                                int oldLimit = input.pushLimit(length);
+                                while (input.getBytesUntilLimit() > 0) {
+                                    int rawValue = input.readEnum();
+                                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                        kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>();
+                                        mutable_bitField0_ |= 0x00000001;
+                                    }
+                                    kpiSampleTypes_.add(rawValue);
+                                }
+                                input.popLimit(oldLimit);
+                                break;
+                            }
+                        case 42:
+                            {
+                                context.ContextOuterClass.Location.Builder subBuilder = null;
+                                if (endpointLocation_ != null) {
+                                    subBuilder = endpointLocation_.toBuilder();
+                                }
+                                endpointLocation_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointLocation_);
+                                    endpointLocation_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
         }
@@ -51874,13 +54065,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+            return getEndpointId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -51917,8 +54107,7 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_TYPE_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object endpointType_ = "";
+        private volatile java.lang.Object endpointType_;
 
         /**
          * <code>string endpoint_type = 3;</code>
@@ -51955,13 +54144,13 @@ public final class ContextOuterClass {
 
         public static final int KPI_SAMPLE_TYPES_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<java.lang.Integer> kpiSampleTypes_;
 
         private static final com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType> kpiSampleTypes_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>() {
 
             public kpi_sample_types.KpiSampleTypes.KpiSampleType convert(java.lang.Integer from) {
-                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(from);
+                @SuppressWarnings("deprecation")
+                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(from);
                 return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
             }
         };
@@ -52042,7 +54231,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
-            return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
+            return getEndpointLocation();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -52064,10 +54253,10 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 output.writeMessage(1, getEndpointId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
+            if (!getEndpointTypeBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointType_);
             }
             if (getKpiSampleTypesList().size() > 0) {
@@ -52080,7 +54269,7 @@ public final class ContextOuterClass {
             if (endpointLocation_ != null) {
                 output.writeMessage(5, getEndpointLocation());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -52092,10 +54281,10 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
+            if (!getEndpointTypeBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointType_);
             }
             {
@@ -52113,7 +54302,7 @@ public final class ContextOuterClass {
             if (endpointLocation_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getEndpointLocation());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -52145,7 +54334,7 @@ public final class ContextOuterClass {
                 if (!getEndpointLocation().equals(other.getEndpointLocation()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -52173,7 +54362,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointLocation().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -52267,28 +54456,36 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPoint.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
                 name_ = "";
                 endpointType_ = "";
                 kpiSampleTypes_ = java.util.Collections.emptyList();
-                bitField0_ = (bitField0_ & ~0x00000008);
-                endpointLocation_ = null;
-                if (endpointLocationBuilder_ != null) {
-                    endpointLocationBuilder_.dispose();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                if (endpointLocationBuilder_ == null) {
+                    endpointLocation_ = null;
+                } else {
+                    endpointLocation_ = null;
                     endpointLocationBuilder_ = null;
                 }
                 return this;
@@ -52316,36 +54513,56 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPoint buildPartial() {
                 context.ContextOuterClass.EndPoint result = new context.ContextOuterClass.EndPoint(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (endpointIdBuilder_ == null) {
+                    result.endpointId_ = endpointId_;
+                } else {
+                    result.endpointId_ = endpointIdBuilder_.build();
+                }
+                result.name_ = name_;
+                result.endpointType_ = endpointType_;
+                if (((bitField0_ & 0x00000001) != 0)) {
+                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                }
+                result.kpiSampleTypes_ = kpiSampleTypes_;
+                if (endpointLocationBuilder_ == null) {
+                    result.endpointLocation_ = endpointLocation_;
+                } else {
+                    result.endpointLocation_ = endpointLocationBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPoint result) {
-                if (((bitField0_ & 0x00000008) != 0)) {
-                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
-                    bitField0_ = (bitField0_ & ~0x00000008);
-                }
-                result.kpiSampleTypes_ = kpiSampleTypes_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
             }
 
-            private void buildPartial0(context.ContextOuterClass.EndPoint result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.endpointType_ = endpointType_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.endpointLocation_ = endpointLocationBuilder_ == null ? endpointLocation_ : endpointLocationBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -52366,18 +54583,16 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getEndpointType().isEmpty()) {
                     endpointType_ = other.endpointType_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (!other.kpiSampleTypes_.isEmpty()) {
                     if (kpiSampleTypes_.isEmpty()) {
                         kpiSampleTypes_ = other.kpiSampleTypes_;
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     } else {
                         ensureKpiSampleTypesIsMutable();
                         kpiSampleTypes_.addAll(other.kpiSampleTypes_);
@@ -52387,7 +54602,7 @@ public final class ContextOuterClass {
                 if (other.hasEndpointLocation()) {
                     mergeEndpointLocation(other.getEndpointLocation());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -52399,84 +54614,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.EndPoint parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    endpointType_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 32:
-                                {
-                                    int tmpRaw = input.readEnum();
-                                    ensureKpiSampleTypesIsMutable();
-                                    kpiSampleTypes_.add(tmpRaw);
-                                    break;
-                                }
-                            // case 32
-                            case 34:
-                                {
-                                    int length = input.readRawVarint32();
-                                    int oldLimit = input.pushLimit(length);
-                                    while (input.getBytesUntilLimit() > 0) {
-                                        int tmpRaw = input.readEnum();
-                                        ensureKpiSampleTypesIsMutable();
-                                        kpiSampleTypes_.add(tmpRaw);
-                                    }
-                                    input.popLimit(oldLimit);
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    input.readMessage(getEndpointLocationFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.EndPoint) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -52491,7 +54639,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return endpointIdBuilder_ != null || endpointId_ != null;
             }
 
             /**
@@ -52515,11 +54663,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -52529,11 +54676,10 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -52542,16 +54688,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
-                        getEndpointIdBuilder().mergeFrom(value);
+                    if (endpointId_ != null) {
+                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
                     } else {
                         endpointId_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -52559,13 +54704,13 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public Builder clearEndpointId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                    onChanged();
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -52573,7 +54718,6 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -52643,7 +54787,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -52654,7 +54797,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -52670,7 +54812,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -52718,7 +54859,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 endpointType_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -52729,7 +54869,6 @@ public final class ContextOuterClass {
              */
             public Builder clearEndpointType() {
                 endpointType_ = getDefaultInstance().getEndpointType();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -52745,7 +54884,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 endpointType_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -52753,9 +54891,9 @@ public final class ContextOuterClass {
             private java.util.List<java.lang.Integer> kpiSampleTypes_ = java.util.Collections.emptyList();
 
             private void ensureKpiSampleTypesIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>(kpiSampleTypes_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -52835,7 +54973,7 @@ public final class ContextOuterClass {
              */
             public Builder clearKpiSampleTypes() {
                 kpiSampleTypes_ = java.util.Collections.emptyList();
-                bitField0_ = (bitField0_ & ~0x00000008);
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -52859,8 +54997,8 @@ public final class ContextOuterClass {
 
             /**
              * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-             * @param index The index to set the value at.
-             * @param value The enum numeric value on the wire for kpiSampleTypes to set.
+             * @param index The index of the value to return.
+             * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
              * @return This builder for chaining.
              */
             public Builder setKpiSampleTypesValue(int index, int value) {
@@ -52905,7 +55043,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointLocation field is set.
              */
             public boolean hasEndpointLocation() {
-                return ((bitField0_ & 0x00000010) != 0);
+                return endpointLocationBuilder_ != null || endpointLocation_ != null;
             }
 
             /**
@@ -52929,11 +55067,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointLocation_ = value;
+                    onChanged();
                 } else {
                     endpointLocationBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -52943,11 +55080,10 @@ public final class ContextOuterClass {
             public Builder setEndpointLocation(context.ContextOuterClass.Location.Builder builderForValue) {
                 if (endpointLocationBuilder_ == null) {
                     endpointLocation_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointLocationBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -52956,16 +55092,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointLocation(context.ContextOuterClass.Location value) {
                 if (endpointLocationBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0) && endpointLocation_ != null && endpointLocation_ != context.ContextOuterClass.Location.getDefaultInstance()) {
-                        getEndpointLocationBuilder().mergeFrom(value);
+                    if (endpointLocation_ != null) {
+                        endpointLocation_ = context.ContextOuterClass.Location.newBuilder(endpointLocation_).mergeFrom(value).buildPartial();
                     } else {
                         endpointLocation_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointLocationBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -52973,13 +55108,13 @@ public final class ContextOuterClass {
              * <code>.context.Location endpoint_location = 5;</code>
              */
             public Builder clearEndpointLocation() {
-                bitField0_ = (bitField0_ & ~0x00000010);
-                endpointLocation_ = null;
-                if (endpointLocationBuilder_ != null) {
-                    endpointLocationBuilder_.dispose();
+                if (endpointLocationBuilder_ == null) {
+                    endpointLocation_ = null;
+                    onChanged();
+                } else {
+                    endpointLocation_ = null;
                     endpointLocationBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -52987,7 +55122,6 @@ public final class ContextOuterClass {
              * <code>.context.Location endpoint_location = 5;</code>
              */
             public context.ContextOuterClass.Location.Builder getEndpointLocationBuilder() {
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return getEndpointLocationFieldBuilder().getBuilder();
             }
@@ -53041,17 +55175,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPoint parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new EndPoint(input, extensionRegistry);
             }
         };
 
@@ -53152,6 +55276,75 @@ public final class ContextOuterClass {
             return new EndPointName();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private EndPointName(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
+                                if (endpointId_ != null) {
+                                    subBuilder = endpointId_.toBuilder();
+                                }
+                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointId_);
+                                    endpointId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                deviceName_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                endpointName_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                endpointType_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
         }
@@ -53188,13 +55381,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+            return getEndpointId();
         }
 
         public static final int DEVICE_NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object deviceName_ = "";
+        private volatile java.lang.Object deviceName_;
 
         /**
          * <code>string device_name = 2;</code>
@@ -53231,8 +55423,7 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_NAME_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object endpointName_ = "";
+        private volatile java.lang.Object endpointName_;
 
         /**
          * <code>string endpoint_name = 3;</code>
@@ -53269,8 +55460,7 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_TYPE_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object endpointType_ = "";
+        private volatile java.lang.Object endpointType_;
 
         /**
          * <code>string endpoint_type = 4;</code>
@@ -53323,16 +55513,16 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 output.writeMessage(1, getEndpointId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceName_)) {
+            if (!getDeviceNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, deviceName_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointName_)) {
+            if (!getEndpointNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointName_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
+            if (!getEndpointTypeBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 4, endpointType_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -53344,16 +55534,16 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceName_)) {
+            if (!getDeviceNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, deviceName_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointName_)) {
+            if (!getEndpointNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointName_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
+            if (!getEndpointTypeBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, endpointType_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -53379,7 +55569,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getEndpointType().equals(other.getEndpointType()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -53401,7 +55591,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getEndpointName().hashCode();
             hash = (37 * hash) + ENDPOINT_TYPE_FIELD_NUMBER;
             hash = (53 * hash) + getEndpointType().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -53495,19 +55685,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointName.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
                 deviceName_ = "";
@@ -53538,27 +55735,46 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointName buildPartial() {
                 context.ContextOuterClass.EndPointName result = new context.ContextOuterClass.EndPointName(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (endpointIdBuilder_ == null) {
+                    result.endpointId_ = endpointId_;
+                } else {
+                    result.endpointId_ = endpointIdBuilder_.build();
                 }
+                result.deviceName_ = deviceName_;
+                result.endpointName_ = endpointName_;
+                result.endpointType_ = endpointType_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.EndPointName result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.deviceName_ = deviceName_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.endpointName_ = endpointName_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.endpointType_ = endpointType_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -53579,20 +55795,17 @@ public final class ContextOuterClass {
                 }
                 if (!other.getDeviceName().isEmpty()) {
                     deviceName_ = other.deviceName_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getEndpointName().isEmpty()) {
                     endpointName_ = other.endpointName_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (!other.getEndpointType().isEmpty()) {
                     endpointType_ = other.endpointType_;
-                    bitField0_ |= 0x00000008;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -53604,68 +55817,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.EndPointName parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    deviceName_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    endpointName_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    endpointType_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.EndPointName) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
@@ -53675,7 +55840,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return endpointIdBuilder_ != null || endpointId_ != null;
             }
 
             /**
@@ -53699,11 +55864,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -53713,11 +55877,10 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -53726,16 +55889,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
-                        getEndpointIdBuilder().mergeFrom(value);
+                    if (endpointId_ != null) {
+                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
                     } else {
                         endpointId_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -53743,13 +55905,13 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public Builder clearEndpointId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                    onChanged();
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -53757,7 +55919,6 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -53827,7 +55988,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 deviceName_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -53838,7 +55998,6 @@ public final class ContextOuterClass {
              */
             public Builder clearDeviceName() {
                 deviceName_ = getDefaultInstance().getDeviceName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -53854,7 +56013,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 deviceName_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -53902,7 +56060,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 endpointName_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -53913,7 +56070,6 @@ public final class ContextOuterClass {
              */
             public Builder clearEndpointName() {
                 endpointName_ = getDefaultInstance().getEndpointName();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -53929,7 +56085,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 endpointName_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -53977,7 +56132,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 endpointType_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -53988,7 +56142,6 @@ public final class ContextOuterClass {
              */
             public Builder clearEndpointType() {
                 endpointType_ = getDefaultInstance().getEndpointType();
-                bitField0_ = (bitField0_ & ~0x00000008);
                 onChanged();
                 return this;
             }
@@ -54004,7 +56157,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 endpointType_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -54036,17 +56188,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointName parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new EndPointName(input, extensionRegistry);
             }
         };
 
@@ -54117,6 +56259,57 @@ public final class ContextOuterClass {
             return new EndPointIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private EndPointIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                endpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
         }
@@ -54128,7 +56321,6 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_;
 
         /**
@@ -54189,7 +56381,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointIds_.size(); i++) {
                 output.writeMessage(1, endpointIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -54201,7 +56393,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, endpointIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -54217,7 +56409,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.EndPointIdList other = (context.ContextOuterClass.EndPointIdList) obj;
             if (!getEndpointIdsList().equals(other.getEndpointIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -54233,7 +56425,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -54327,23 +56519,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getEndpointIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (endpointIdsBuilder_ == null) {
                     endpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    endpointIds_ = null;
                     endpointIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -54369,15 +56567,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointIdList buildPartial() {
                 context.ContextOuterClass.EndPointIdList result = new context.ContextOuterClass.EndPointIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPointIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (endpointIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
@@ -54387,10 +56577,38 @@ public final class ContextOuterClass {
                 } else {
                     result.endpointIds_ = endpointIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.EndPointIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -54430,7 +56648,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -54442,47 +56660,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.EndPointIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                    if (endpointIdsBuilder_ == null) {
-                                        ensureEndpointIdsIsMutable();
-                                        endpointIds_.add(m);
-                                    } else {
-                                        endpointIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.EndPointIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -54752,17 +56940,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new EndPointIdList(input, extensionRegistry);
             }
         };
 
@@ -54833,6 +57011,57 @@ public final class ContextOuterClass {
             return new EndPointNameList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private EndPointNameList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    endpointNames_ = new java.util.ArrayList<context.ContextOuterClass.EndPointName>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                endpointNames_.add(input.readMessage(context.ContextOuterClass.EndPointName.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
         }
@@ -54844,7 +57073,6 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_NAMES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointName> endpointNames_;
 
         /**
@@ -54905,7 +57133,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointNames_.size(); i++) {
                 output.writeMessage(1, endpointNames_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -54917,7 +57145,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointNames_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, endpointNames_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -54933,7 +57161,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.EndPointNameList other = (context.ContextOuterClass.EndPointNameList) obj;
             if (!getEndpointNamesList().equals(other.getEndpointNamesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -54949,7 +57177,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_NAMES_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointNamesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -55043,23 +57271,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointNameList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getEndpointNamesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (endpointNamesBuilder_ == null) {
                     endpointNames_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    endpointNames_ = null;
                     endpointNamesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -55085,15 +57319,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointNameList buildPartial() {
                 context.ContextOuterClass.EndPointNameList result = new context.ContextOuterClass.EndPointNameList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPointNameList result) {
+                int from_bitField0_ = bitField0_;
                 if (endpointNamesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
@@ -55103,10 +57329,38 @@ public final class ContextOuterClass {
                 } else {
                     result.endpointNames_ = endpointNamesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.EndPointNameList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -55146,7 +57400,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -55158,47 +57412,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.EndPointNameList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.EndPointName m = input.readMessage(context.ContextOuterClass.EndPointName.parser(), extensionRegistry);
-                                    if (endpointNamesBuilder_ == null) {
-                                        ensureEndpointNamesIsMutable();
-                                        endpointNames_.add(m);
-                                    } else {
-                                        endpointNamesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.EndPointNameList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -55468,17 +57692,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointNameList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new EndPointNameList(input, extensionRegistry);
             }
         };
 
@@ -55549,6 +57763,56 @@ public final class ContextOuterClass {
             return new ConfigRule_Custom();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConfigRule_Custom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                resourceKey_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                resourceValue_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
         }
@@ -55560,8 +57824,7 @@ public final class ContextOuterClass {
 
         public static final int RESOURCE_KEY_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object resourceKey_ = "";
+        private volatile java.lang.Object resourceKey_;
 
         /**
          * <code>string resource_key = 1;</code>
@@ -55598,8 +57861,7 @@ public final class ContextOuterClass {
 
         public static final int RESOURCE_VALUE_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object resourceValue_ = "";
+        private volatile java.lang.Object resourceValue_;
 
         /**
          * <code>string resource_value = 2;</code>
@@ -55649,13 +57911,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceKey_)) {
+            if (!getResourceKeyBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, resourceKey_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceValue_)) {
+            if (!getResourceValueBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, resourceValue_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -55664,13 +57926,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceKey_)) {
+            if (!getResourceKeyBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, resourceKey_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceValue_)) {
+            if (!getResourceValueBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, resourceValue_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -55688,7 +57950,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getResourceValue().equals(other.getResourceValue()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -55704,7 +57966,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getResourceKey().hashCode();
             hash = (37 * hash) + RESOURCE_VALUE_FIELD_NUMBER;
             hash = (53 * hash) + getResourceValue().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -55798,16 +58060,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConfigRule_Custom.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 resourceKey_ = "";
                 resourceValue_ = "";
                 return this;
@@ -55835,21 +58103,40 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConfigRule_Custom buildPartial() {
                 context.ContextOuterClass.ConfigRule_Custom result = new context.ContextOuterClass.ConfigRule_Custom(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.resourceKey_ = resourceKey_;
+                result.resourceValue_ = resourceValue_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConfigRule_Custom result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.resourceKey_ = resourceKey_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.resourceValue_ = resourceValue_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -55867,15 +58154,13 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getResourceKey().isEmpty()) {
                     resourceKey_ = other.resourceKey_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getResourceValue().isEmpty()) {
                     resourceValue_ = other.resourceValue_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -55887,54 +58172,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConfigRule_Custom parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    resourceKey_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    resourceValue_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConfigRule_Custom) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private java.lang.Object resourceKey_ = "";
 
             /**
@@ -55978,7 +58229,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 resourceKey_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -55989,7 +58239,6 @@ public final class ContextOuterClass {
              */
             public Builder clearResourceKey() {
                 resourceKey_ = getDefaultInstance().getResourceKey();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -56005,7 +58254,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 resourceKey_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -56053,7 +58301,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 resourceValue_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -56064,7 +58311,6 @@ public final class ContextOuterClass {
              */
             public Builder clearResourceValue() {
                 resourceValue_ = getDefaultInstance().getResourceValue();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -56080,7 +58326,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 resourceValue_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -56112,17 +58357,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConfigRule_Custom parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConfigRule_Custom(input, extensionRegistry);
             }
         };
 
@@ -56201,6 +58436,70 @@ public final class ContextOuterClass {
             return new ConfigRule_ACL();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConfigRule_ACL(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
+                                if (endpointId_ != null) {
+                                    subBuilder = endpointId_.toBuilder();
+                                }
+                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointId_);
+                                    endpointId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                acl.Acl.AclRuleSet.Builder subBuilder = null;
+                                if (ruleSet_ != null) {
+                                    subBuilder = ruleSet_.toBuilder();
+                                }
+                                ruleSet_ = input.readMessage(acl.Acl.AclRuleSet.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(ruleSet_);
+                                    ruleSet_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
         }
@@ -56237,7 +58536,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+            return getEndpointId();
         }
 
         public static final int RULE_SET_FIELD_NUMBER = 2;
@@ -56267,7 +58566,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder() {
-            return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
+            return getRuleSet();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -56291,7 +58590,7 @@ public final class ContextOuterClass {
             if (ruleSet_ != null) {
                 output.writeMessage(2, getRuleSet());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -56306,7 +58605,7 @@ public final class ContextOuterClass {
             if (ruleSet_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getRuleSet());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -56332,7 +58631,7 @@ public final class ContextOuterClass {
                 if (!getRuleSet().equals(other.getRuleSet()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -56352,7 +58651,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + RULE_SET_FIELD_NUMBER;
                 hash = (53 * hash) + getRuleSet().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -56446,24 +58745,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConfigRule_ACL.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                ruleSet_ = null;
-                if (ruleSetBuilder_ != null) {
-                    ruleSetBuilder_.dispose();
+                if (ruleSetBuilder_ == null) {
+                    ruleSet_ = null;
+                } else {
+                    ruleSet_ = null;
                     ruleSetBuilder_ = null;
                 }
                 return this;
@@ -56491,21 +58798,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConfigRule_ACL buildPartial() {
                 context.ContextOuterClass.ConfigRule_ACL result = new context.ContextOuterClass.ConfigRule_ACL(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (endpointIdBuilder_ == null) {
+                    result.endpointId_ = endpointId_;
+                } else {
+                    result.endpointId_ = endpointIdBuilder_.build();
+                }
+                if (ruleSetBuilder_ == null) {
+                    result.ruleSet_ = ruleSet_;
+                } else {
+                    result.ruleSet_ = ruleSetBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConfigRule_ACL result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.ruleSet_ = ruleSetBuilder_ == null ? ruleSet_ : ruleSetBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -56527,7 +58861,7 @@ public final class ContextOuterClass {
                 if (other.hasRuleSet()) {
                     mergeRuleSet(other.getRuleSet());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -56539,54 +58873,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConfigRule_ACL parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getRuleSetFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConfigRule_ACL) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
@@ -56596,7 +58896,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return endpointIdBuilder_ != null || endpointId_ != null;
             }
 
             /**
@@ -56620,11 +58920,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -56634,11 +58933,10 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -56647,16 +58945,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
-                        getEndpointIdBuilder().mergeFrom(value);
+                    if (endpointId_ != null) {
+                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
                     } else {
                         endpointId_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -56664,13 +58961,13 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public Builder clearEndpointId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                    onChanged();
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -56678,7 +58975,6 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -56714,7 +59010,7 @@ public final class ContextOuterClass {
              * @return Whether the ruleSet field is set.
              */
             public boolean hasRuleSet() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return ruleSetBuilder_ != null || ruleSet_ != null;
             }
 
             /**
@@ -56738,11 +59034,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     ruleSet_ = value;
+                    onChanged();
                 } else {
                     ruleSetBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -56752,11 +59047,10 @@ public final class ContextOuterClass {
             public Builder setRuleSet(acl.Acl.AclRuleSet.Builder builderForValue) {
                 if (ruleSetBuilder_ == null) {
                     ruleSet_ = builderForValue.build();
+                    onChanged();
                 } else {
                     ruleSetBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -56765,16 +59059,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeRuleSet(acl.Acl.AclRuleSet value) {
                 if (ruleSetBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && ruleSet_ != null && ruleSet_ != acl.Acl.AclRuleSet.getDefaultInstance()) {
-                        getRuleSetBuilder().mergeFrom(value);
+                    if (ruleSet_ != null) {
+                        ruleSet_ = acl.Acl.AclRuleSet.newBuilder(ruleSet_).mergeFrom(value).buildPartial();
                     } else {
                         ruleSet_ = value;
                     }
+                    onChanged();
                 } else {
                     ruleSetBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -56782,13 +59075,13 @@ public final class ContextOuterClass {
              * <code>.acl.AclRuleSet rule_set = 2;</code>
              */
             public Builder clearRuleSet() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                ruleSet_ = null;
-                if (ruleSetBuilder_ != null) {
-                    ruleSetBuilder_.dispose();
+                if (ruleSetBuilder_ == null) {
+                    ruleSet_ = null;
+                    onChanged();
+                } else {
+                    ruleSet_ = null;
                     ruleSetBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -56796,7 +59089,6 @@ public final class ContextOuterClass {
              * <code>.acl.AclRuleSet rule_set = 2;</code>
              */
             public acl.Acl.AclRuleSet.Builder getRuleSetBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getRuleSetFieldBuilder().getBuilder();
             }
@@ -56850,17 +59142,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConfigRule_ACL parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConfigRule_ACL(input, extensionRegistry);
             }
         };
 
@@ -56928,7 +59210,7 @@ public final class ContextOuterClass {
          */
         context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder();
 
-        context.ContextOuterClass.ConfigRule.ConfigRuleCase getConfigRuleCase();
+        public context.ContextOuterClass.ConfigRule.ConfigRuleCase getConfigRuleCase();
     }
 
     /**
@@ -56954,6 +59236,78 @@ public final class ContextOuterClass {
             return new ConfigRule();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConfigRule(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                action_ = rawValue;
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.ConfigRule_Custom.Builder subBuilder = null;
+                                if (configRuleCase_ == 2) {
+                                    subBuilder = ((context.ContextOuterClass.ConfigRule_Custom) configRule_).toBuilder();
+                                }
+                                configRule_ = input.readMessage(context.ContextOuterClass.ConfigRule_Custom.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.ConfigRule_Custom) configRule_);
+                                    configRule_ = subBuilder.buildPartial();
+                                }
+                                configRuleCase_ = 2;
+                                break;
+                            }
+                        case 26:
+                            {
+                                context.ContextOuterClass.ConfigRule_ACL.Builder subBuilder = null;
+                                if (configRuleCase_ == 3) {
+                                    subBuilder = ((context.ContextOuterClass.ConfigRule_ACL) configRule_).toBuilder();
+                                }
+                                configRule_ = input.readMessage(context.ContextOuterClass.ConfigRule_ACL.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.ConfigRule_ACL) configRule_);
+                                    configRule_ = subBuilder.buildPartial();
+                                }
+                                configRuleCase_ = 3;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
         }
@@ -56965,7 +59319,6 @@ public final class ContextOuterClass {
 
         private int configRuleCase_ = 0;
 
-        @SuppressWarnings("serial")
         private java.lang.Object configRule_;
 
         public enum ConfigRuleCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -57012,7 +59365,7 @@ public final class ContextOuterClass {
 
         public static final int ACTION_FIELD_NUMBER = 1;
 
-        private int action_ = 0;
+        private int action_;
 
         /**
          * <code>.context.ConfigActionEnum action = 1;</code>
@@ -57029,7 +59382,8 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConfigActionEnum getAction() {
-            context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.forNumber(action_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.valueOf(action_);
             return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
         }
 
@@ -57125,7 +59479,7 @@ public final class ContextOuterClass {
             if (configRuleCase_ == 3) {
                 output.writeMessage(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -57143,7 +59497,7 @@ public final class ContextOuterClass {
             if (configRuleCase_ == 3) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -57173,7 +59527,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -57199,7 +59553,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -57293,23 +59647,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConfigRule.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 action_ = 0;
-                if (customBuilder_ != null) {
-                    customBuilder_.clear();
-                }
-                if (aclBuilder_ != null) {
-                    aclBuilder_.clear();
-                }
                 configRuleCase_ = 0;
                 configRule_ = null;
                 return this;
@@ -57337,30 +59691,54 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConfigRule buildPartial() {
                 context.ContextOuterClass.ConfigRule result = new context.ContextOuterClass.ConfigRule(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                result.action_ = action_;
+                if (configRuleCase_ == 2) {
+                    if (customBuilder_ == null) {
+                        result.configRule_ = configRule_;
+                    } else {
+                        result.configRule_ = customBuilder_.build();
+                    }
                 }
-                buildPartialOneofs(result);
+                if (configRuleCase_ == 3) {
+                    if (aclBuilder_ == null) {
+                        result.configRule_ = configRule_;
+                    } else {
+                        result.configRule_ = aclBuilder_.build();
+                    }
+                }
+                result.configRuleCase_ = configRuleCase_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConfigRule result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.action_ = action_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
             }
 
-            private void buildPartialOneofs(context.ContextOuterClass.ConfigRule result) {
-                result.configRuleCase_ = configRuleCase_;
-                result.configRule_ = this.configRule_;
-                if (configRuleCase_ == 2 && customBuilder_ != null) {
-                    result.configRule_ = customBuilder_.build();
-                }
-                if (configRuleCase_ == 3 && aclBuilder_ != null) {
-                    result.configRule_ = aclBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -57395,7 +59773,7 @@ public final class ContextOuterClass {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -57407,56 +59785,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConfigRule parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    action_ = input.readEnum();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 18:
-                                {
-                                    input.readMessage(getCustomFieldBuilder().getBuilder(), extensionRegistry);
-                                    configRuleCase_ = 2;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getAclFieldBuilder().getBuilder(), extensionRegistry);
-                                    configRuleCase_ = 3;
-                                    break;
-                                }
-                            // case 26
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConfigRule) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -57475,8 +59814,6 @@ public final class ContextOuterClass {
                 return this;
             }
 
-            private int bitField0_;
-
             private int action_ = 0;
 
             /**
@@ -57495,7 +59832,6 @@ public final class ContextOuterClass {
              */
             public Builder setActionValue(int value) {
                 action_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -57506,7 +59842,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ConfigActionEnum getAction() {
-                context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.forNumber(action_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.valueOf(action_);
                 return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
             }
 
@@ -57519,7 +59856,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000001;
                 action_ = value.getNumber();
                 onChanged();
                 return this;
@@ -57530,7 +59866,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAction() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 action_ = 0;
                 onChanged();
                 return this;
@@ -57611,9 +59946,8 @@ public final class ContextOuterClass {
                 } else {
                     if (configRuleCase_ == 2) {
                         customBuilder_.mergeFrom(value);
-                    } else {
-                        customBuilder_.setMessage(value);
                     }
+                    customBuilder_.setMessage(value);
                 }
                 configRuleCase_ = 2;
                 return this;
@@ -57674,6 +60008,7 @@ public final class ContextOuterClass {
                 }
                 configRuleCase_ = 2;
                 onChanged();
+                ;
                 return customBuilder_;
             }
 
@@ -57752,9 +60087,8 @@ public final class ContextOuterClass {
                 } else {
                     if (configRuleCase_ == 3) {
                         aclBuilder_.mergeFrom(value);
-                    } else {
-                        aclBuilder_.setMessage(value);
                     }
+                    aclBuilder_.setMessage(value);
                 }
                 configRuleCase_ = 3;
                 return this;
@@ -57815,6 +60149,7 @@ public final class ContextOuterClass {
                 }
                 configRuleCase_ = 3;
                 onChanged();
+                ;
                 return aclBuilder_;
             }
 
@@ -57845,17 +60180,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConfigRule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConfigRule(input, extensionRegistry);
             }
         };
 
@@ -57926,6 +60251,56 @@ public final class ContextOuterClass {
             return new Constraint_Custom();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_Custom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                constraintType_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                constraintValue_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
         }
@@ -57937,8 +60312,7 @@ public final class ContextOuterClass {
 
         public static final int CONSTRAINT_TYPE_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object constraintType_ = "";
+        private volatile java.lang.Object constraintType_;
 
         /**
          * <code>string constraint_type = 1;</code>
@@ -57975,8 +60349,7 @@ public final class ContextOuterClass {
 
         public static final int CONSTRAINT_VALUE_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object constraintValue_ = "";
+        private volatile java.lang.Object constraintValue_;
 
         /**
          * <code>string constraint_value = 2;</code>
@@ -58026,13 +60399,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintType_)) {
+            if (!getConstraintTypeBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, constraintType_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintValue_)) {
+            if (!getConstraintValueBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, constraintValue_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -58041,13 +60414,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintType_)) {
+            if (!getConstraintTypeBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, constraintType_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintValue_)) {
+            if (!getConstraintValueBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, constraintValue_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -58065,7 +60438,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getConstraintValue().equals(other.getConstraintValue()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -58081,7 +60454,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getConstraintType().hashCode();
             hash = (37 * hash) + CONSTRAINT_VALUE_FIELD_NUMBER;
             hash = (53 * hash) + getConstraintValue().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -58175,16 +60548,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_Custom.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 constraintType_ = "";
                 constraintValue_ = "";
                 return this;
@@ -58212,21 +60591,40 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_Custom buildPartial() {
                 context.ContextOuterClass.Constraint_Custom result = new context.ContextOuterClass.Constraint_Custom(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.constraintType_ = constraintType_;
+                result.constraintValue_ = constraintValue_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_Custom result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.constraintType_ = constraintType_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.constraintValue_ = constraintValue_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -58244,15 +60642,13 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getConstraintType().isEmpty()) {
                     constraintType_ = other.constraintType_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getConstraintValue().isEmpty()) {
                     constraintValue_ = other.constraintValue_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -58264,54 +60660,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_Custom parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    constraintType_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    constraintValue_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_Custom) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private java.lang.Object constraintType_ = "";
 
             /**
@@ -58355,7 +60717,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 constraintType_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -58366,7 +60727,6 @@ public final class ContextOuterClass {
              */
             public Builder clearConstraintType() {
                 constraintType_ = getDefaultInstance().getConstraintType();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -58382,7 +60742,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 constraintType_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -58430,7 +60789,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 constraintValue_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -58441,7 +60799,6 @@ public final class ContextOuterClass {
              */
             public Builder clearConstraintValue() {
                 constraintValue_ = getDefaultInstance().getConstraintValue();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -58457,7 +60814,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 constraintValue_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -58489,17 +60845,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_Custom parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_Custom(input, extensionRegistry);
             }
         };
 
@@ -58556,6 +60902,54 @@ public final class ContextOuterClass {
             return new Constraint_Schedule();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_Schedule(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 13:
+                            {
+                                startTimestamp_ = input.readFloat();
+                                break;
+                            }
+                        case 21:
+                            {
+                                durationDays_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
         }
@@ -58567,7 +60961,7 @@ public final class ContextOuterClass {
 
         public static final int START_TIMESTAMP_FIELD_NUMBER = 1;
 
-        private float startTimestamp_ = 0F;
+        private float startTimestamp_;
 
         /**
          * <code>float start_timestamp = 1;</code>
@@ -58580,7 +60974,7 @@ public final class ContextOuterClass {
 
         public static final int DURATION_DAYS_FIELD_NUMBER = 2;
 
-        private float durationDays_ = 0F;
+        private float durationDays_;
 
         /**
          * <code>float duration_days = 2;</code>
@@ -58606,13 +61000,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (java.lang.Float.floatToRawIntBits(startTimestamp_) != 0) {
+            if (startTimestamp_ != 0F) {
                 output.writeFloat(1, startTimestamp_);
             }
-            if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) {
+            if (durationDays_ != 0F) {
                 output.writeFloat(2, durationDays_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -58621,13 +61015,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (java.lang.Float.floatToRawIntBits(startTimestamp_) != 0) {
+            if (startTimestamp_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, startTimestamp_);
             }
-            if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) {
+            if (durationDays_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, durationDays_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -58645,7 +61039,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getDurationDays()) != java.lang.Float.floatToIntBits(other.getDurationDays()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -58661,7 +61055,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getStartTimestamp());
             hash = (37 * hash) + DURATION_DAYS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getDurationDays());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -58755,16 +61149,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_Schedule.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 startTimestamp_ = 0F;
                 durationDays_ = 0F;
                 return this;
@@ -58792,21 +61192,40 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_Schedule buildPartial() {
                 context.ContextOuterClass.Constraint_Schedule result = new context.ContextOuterClass.Constraint_Schedule(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.startTimestamp_ = startTimestamp_;
+                result.durationDays_ = durationDays_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_Schedule result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.startTimestamp_ = startTimestamp_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.durationDays_ = durationDays_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -58828,7 +61247,7 @@ public final class ContextOuterClass {
                 if (other.getDurationDays() != 0F) {
                     setDurationDays(other.getDurationDays());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -58840,54 +61259,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_Schedule parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 13:
-                                {
-                                    startTimestamp_ = input.readFloat();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 13
-                            case 21:
-                                {
-                                    durationDays_ = input.readFloat();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 21
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_Schedule) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private float startTimestamp_;
 
             /**
@@ -58906,7 +61291,6 @@ public final class ContextOuterClass {
              */
             public Builder setStartTimestamp(float value) {
                 startTimestamp_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -58916,7 +61300,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearStartTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 startTimestamp_ = 0F;
                 onChanged();
                 return this;
@@ -58940,7 +61323,6 @@ public final class ContextOuterClass {
              */
             public Builder setDurationDays(float value) {
                 durationDays_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -58950,7 +61332,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDurationDays() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 durationDays_ = 0F;
                 onChanged();
                 return this;
@@ -58983,17 +61364,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_Schedule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_Schedule(input, extensionRegistry);
             }
         };
 
@@ -59050,6 +61421,54 @@ public final class ContextOuterClass {
             return new GPS_Position();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private GPS_Position(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 13:
+                            {
+                                latitude_ = input.readFloat();
+                                break;
+                            }
+                        case 21:
+                            {
+                                longitude_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
         }
@@ -59061,7 +61480,7 @@ public final class ContextOuterClass {
 
         public static final int LATITUDE_FIELD_NUMBER = 1;
 
-        private float latitude_ = 0F;
+        private float latitude_;
 
         /**
          * <code>float latitude = 1;</code>
@@ -59074,7 +61493,7 @@ public final class ContextOuterClass {
 
         public static final int LONGITUDE_FIELD_NUMBER = 2;
 
-        private float longitude_ = 0F;
+        private float longitude_;
 
         /**
          * <code>float longitude = 2;</code>
@@ -59100,13 +61519,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (java.lang.Float.floatToRawIntBits(latitude_) != 0) {
+            if (latitude_ != 0F) {
                 output.writeFloat(1, latitude_);
             }
-            if (java.lang.Float.floatToRawIntBits(longitude_) != 0) {
+            if (longitude_ != 0F) {
                 output.writeFloat(2, longitude_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -59115,13 +61534,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (java.lang.Float.floatToRawIntBits(latitude_) != 0) {
+            if (latitude_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, latitude_);
             }
-            if (java.lang.Float.floatToRawIntBits(longitude_) != 0) {
+            if (longitude_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, longitude_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -59139,7 +61558,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getLongitude()) != java.lang.Float.floatToIntBits(other.getLongitude()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -59155,7 +61574,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getLatitude());
             hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getLongitude());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -59249,16 +61668,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.GPS_Position.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 latitude_ = 0F;
                 longitude_ = 0F;
                 return this;
@@ -59286,21 +61711,40 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.GPS_Position buildPartial() {
                 context.ContextOuterClass.GPS_Position result = new context.ContextOuterClass.GPS_Position(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.latitude_ = latitude_;
+                result.longitude_ = longitude_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.GPS_Position result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.latitude_ = latitude_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.longitude_ = longitude_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -59322,7 +61766,7 @@ public final class ContextOuterClass {
                 if (other.getLongitude() != 0F) {
                     setLongitude(other.getLongitude());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -59334,54 +61778,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.GPS_Position parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 13:
-                                {
-                                    latitude_ = input.readFloat();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 13
-                            case 21:
-                                {
-                                    longitude_ = input.readFloat();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 21
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.GPS_Position) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private float latitude_;
 
             /**
@@ -59400,7 +61810,6 @@ public final class ContextOuterClass {
              */
             public Builder setLatitude(float value) {
                 latitude_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -59410,7 +61819,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearLatitude() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 latitude_ = 0F;
                 onChanged();
                 return this;
@@ -59434,7 +61842,6 @@ public final class ContextOuterClass {
              */
             public Builder setLongitude(float value) {
                 longitude_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -59444,7 +61851,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearLongitude() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 longitude_ = 0F;
                 onChanged();
                 return this;
@@ -59477,17 +61883,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public GPS_Position parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new GPS_Position(input, extensionRegistry);
             }
         };
 
@@ -59544,7 +61940,7 @@ public final class ContextOuterClass {
          */
         context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder();
 
-        context.ContextOuterClass.Location.LocationCase getLocationCase();
+        public context.ContextOuterClass.Location.LocationCase getLocationCase();
     }
 
     /**
@@ -59569,6 +61965,65 @@ public final class ContextOuterClass {
             return new Location();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Location(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                locationCase_ = 1;
+                                location_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.GPS_Position.Builder subBuilder = null;
+                                if (locationCase_ == 2) {
+                                    subBuilder = ((context.ContextOuterClass.GPS_Position) location_).toBuilder();
+                                }
+                                location_ = input.readMessage(context.ContextOuterClass.GPS_Position.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.GPS_Position) location_);
+                                    location_ = subBuilder.buildPartial();
+                                }
+                                locationCase_ = 2;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Location_descriptor;
         }
@@ -59580,7 +62035,6 @@ public final class ContextOuterClass {
 
         private int locationCase_ = 0;
 
-        @SuppressWarnings("serial")
         private java.lang.Object location_;
 
         public enum LocationCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -59731,7 +62185,7 @@ public final class ContextOuterClass {
             if (locationCase_ == 2) {
                 output.writeMessage(2, (context.ContextOuterClass.GPS_Position) location_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -59746,7 +62200,7 @@ public final class ContextOuterClass {
             if (locationCase_ == 2) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (context.ContextOuterClass.GPS_Position) location_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -59774,7 +62228,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -59798,7 +62252,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -59892,19 +62346,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Location.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                if (gpsPositionBuilder_ != null) {
-                    gpsPositionBuilder_.clear();
-                }
                 locationCase_ = 0;
                 location_ = null;
                 return this;
@@ -59932,24 +62389,49 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Location buildPartial() {
                 context.ContextOuterClass.Location result = new context.ContextOuterClass.Location(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (locationCase_ == 1) {
+                    result.location_ = location_;
+                }
+                if (locationCase_ == 2) {
+                    if (gpsPositionBuilder_ == null) {
+                        result.location_ = location_;
+                    } else {
+                        result.location_ = gpsPositionBuilder_.build();
+                    }
                 }
-                buildPartialOneofs(result);
+                result.locationCase_ = locationCase_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Location result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
             }
 
-            private void buildPartialOneofs(context.ContextOuterClass.Location result) {
-                result.locationCase_ = locationCase_;
-                result.location_ = this.location_;
-                if (locationCase_ == 2 && gpsPositionBuilder_ != null) {
-                    result.location_ = gpsPositionBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -59983,7 +62465,7 @@ public final class ContextOuterClass {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -59995,50 +62477,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Location parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    java.lang.String s = input.readStringRequireUtf8();
-                                    locationCase_ = 1;
-                                    location_ = s;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getGpsPositionFieldBuilder().getBuilder(), extensionRegistry);
-                                    locationCase_ = 2;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Location) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -60057,8 +62506,6 @@ public final class ContextOuterClass {
                 return this;
             }
 
-            private int bitField0_;
-
             /**
              * <code>string region = 1;</code>
              * @return Whether the region field is set.
@@ -60230,9 +62677,8 @@ public final class ContextOuterClass {
                 } else {
                     if (locationCase_ == 2) {
                         gpsPositionBuilder_.mergeFrom(value);
-                    } else {
-                        gpsPositionBuilder_.setMessage(value);
                     }
+                    gpsPositionBuilder_.setMessage(value);
                 }
                 locationCase_ = 2;
                 return this;
@@ -60293,6 +62739,7 @@ public final class ContextOuterClass {
                 }
                 locationCase_ = 2;
                 onChanged();
+                ;
                 return gpsPositionBuilder_;
             }
 
@@ -60323,17 +62770,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Location parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Location(input, extensionRegistry);
             }
         };
 
@@ -60412,6 +62849,70 @@ public final class ContextOuterClass {
             return new Constraint_EndPointLocation();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_EndPointLocation(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
+                                if (endpointId_ != null) {
+                                    subBuilder = endpointId_.toBuilder();
+                                }
+                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointId_);
+                                    endpointId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.Location.Builder subBuilder = null;
+                                if (location_ != null) {
+                                    subBuilder = location_.toBuilder();
+                                }
+                                location_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(location_);
+                                    location_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
         }
@@ -60448,7 +62949,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+            return getEndpointId();
         }
 
         public static final int LOCATION_FIELD_NUMBER = 2;
@@ -60478,7 +62979,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder() {
-            return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
+            return getLocation();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -60502,7 +63003,7 @@ public final class ContextOuterClass {
             if (location_ != null) {
                 output.writeMessage(2, getLocation());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -60517,7 +63018,7 @@ public final class ContextOuterClass {
             if (location_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getLocation());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -60543,7 +63044,7 @@ public final class ContextOuterClass {
                 if (!getLocation().equals(other.getLocation()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -60563,7 +63064,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LOCATION_FIELD_NUMBER;
                 hash = (53 * hash) + getLocation().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -60657,24 +63158,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_EndPointLocation.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                location_ = null;
-                if (locationBuilder_ != null) {
-                    locationBuilder_.dispose();
+                if (locationBuilder_ == null) {
+                    location_ = null;
+                } else {
+                    location_ = null;
                     locationBuilder_ = null;
                 }
                 return this;
@@ -60702,21 +63211,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_EndPointLocation buildPartial() {
                 context.ContextOuterClass.Constraint_EndPointLocation result = new context.ContextOuterClass.Constraint_EndPointLocation(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (endpointIdBuilder_ == null) {
+                    result.endpointId_ = endpointId_;
+                } else {
+                    result.endpointId_ = endpointIdBuilder_.build();
+                }
+                if (locationBuilder_ == null) {
+                    result.location_ = location_;
+                } else {
+                    result.location_ = locationBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_EndPointLocation result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.location_ = locationBuilder_ == null ? location_ : locationBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -60738,7 +63274,7 @@ public final class ContextOuterClass {
                 if (other.hasLocation()) {
                     mergeLocation(other.getLocation());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -60750,54 +63286,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_EndPointLocation parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getLocationFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_EndPointLocation) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
@@ -60807,7 +63309,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return endpointIdBuilder_ != null || endpointId_ != null;
             }
 
             /**
@@ -60831,11 +63333,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -60845,11 +63346,10 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -60858,16 +63358,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
-                        getEndpointIdBuilder().mergeFrom(value);
+                    if (endpointId_ != null) {
+                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
                     } else {
                         endpointId_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -60875,13 +63374,13 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public Builder clearEndpointId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                    onChanged();
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -60889,7 +63388,6 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -60925,7 +63423,7 @@ public final class ContextOuterClass {
              * @return Whether the location field is set.
              */
             public boolean hasLocation() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return locationBuilder_ != null || location_ != null;
             }
 
             /**
@@ -60949,11 +63447,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     location_ = value;
+                    onChanged();
                 } else {
                     locationBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -60963,11 +63460,10 @@ public final class ContextOuterClass {
             public Builder setLocation(context.ContextOuterClass.Location.Builder builderForValue) {
                 if (locationBuilder_ == null) {
                     location_ = builderForValue.build();
+                    onChanged();
                 } else {
                     locationBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -60976,16 +63472,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeLocation(context.ContextOuterClass.Location value) {
                 if (locationBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && location_ != null && location_ != context.ContextOuterClass.Location.getDefaultInstance()) {
-                        getLocationBuilder().mergeFrom(value);
+                    if (location_ != null) {
+                        location_ = context.ContextOuterClass.Location.newBuilder(location_).mergeFrom(value).buildPartial();
                     } else {
                         location_ = value;
                     }
+                    onChanged();
                 } else {
                     locationBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -60993,13 +63488,13 @@ public final class ContextOuterClass {
              * <code>.context.Location location = 2;</code>
              */
             public Builder clearLocation() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                location_ = null;
-                if (locationBuilder_ != null) {
-                    locationBuilder_.dispose();
+                if (locationBuilder_ == null) {
+                    location_ = null;
+                    onChanged();
+                } else {
+                    location_ = null;
                     locationBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -61007,7 +63502,6 @@ public final class ContextOuterClass {
              * <code>.context.Location location = 2;</code>
              */
             public context.ContextOuterClass.Location.Builder getLocationBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getLocationFieldBuilder().getBuilder();
             }
@@ -61061,17 +63555,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_EndPointLocation parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_EndPointLocation(input, extensionRegistry);
             }
         };
 
@@ -61139,6 +63623,62 @@ public final class ContextOuterClass {
             return new Constraint_EndPointPriority();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_EndPointPriority(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
+                                if (endpointId_ != null) {
+                                    subBuilder = endpointId_.toBuilder();
+                                }
+                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointId_);
+                                    endpointId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                priority_ = input.readUInt32();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
         }
@@ -61175,12 +63715,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+            return getEndpointId();
         }
 
         public static final int PRIORITY_FIELD_NUMBER = 2;
 
-        private int priority_ = 0;
+        private int priority_;
 
         /**
          * <code>uint32 priority = 2;</code>
@@ -61212,7 +63752,7 @@ public final class ContextOuterClass {
             if (priority_ != 0) {
                 output.writeUInt32(2, priority_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -61227,7 +63767,7 @@ public final class ContextOuterClass {
             if (priority_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, priority_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -61249,7 +63789,7 @@ public final class ContextOuterClass {
             }
             if (getPriority() != other.getPriority())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -61267,7 +63807,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
             hash = (53 * hash) + getPriority();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -61361,19 +63901,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_EndPointPriority.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
                 priority_ = 0;
@@ -61402,21 +63949,44 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_EndPointPriority buildPartial() {
                 context.ContextOuterClass.Constraint_EndPointPriority result = new context.ContextOuterClass.Constraint_EndPointPriority(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (endpointIdBuilder_ == null) {
+                    result.endpointId_ = endpointId_;
+                } else {
+                    result.endpointId_ = endpointIdBuilder_.build();
                 }
+                result.priority_ = priority_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_EndPointPriority result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.priority_ = priority_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -61438,7 +64008,7 @@ public final class ContextOuterClass {
                 if (other.getPriority() != 0) {
                     setPriority(other.getPriority());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -61450,54 +64020,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_EndPointPriority parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    priority_ = input.readUInt32();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_EndPointPriority) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
@@ -61507,7 +64043,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return endpointIdBuilder_ != null || endpointId_ != null;
             }
 
             /**
@@ -61531,11 +64067,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -61545,11 +64080,10 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -61558,16 +64092,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
-                        getEndpointIdBuilder().mergeFrom(value);
+                    if (endpointId_ != null) {
+                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
                     } else {
                         endpointId_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -61575,13 +64108,13 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public Builder clearEndpointId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                    onChanged();
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -61589,7 +64122,6 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -61634,7 +64166,6 @@ public final class ContextOuterClass {
              */
             public Builder setPriority(int value) {
                 priority_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -61644,7 +64175,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearPriority() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 priority_ = 0;
                 onChanged();
                 return this;
@@ -61677,17 +64207,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_EndPointPriority parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_EndPointPriority(input, extensionRegistry);
             }
         };
 
@@ -61738,6 +64258,49 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Latency();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_SLA_Latency(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 13:
+                            {
+                                e2ELatencyMs_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
         }
@@ -61749,7 +64312,7 @@ public final class ContextOuterClass {
 
         public static final int E2E_LATENCY_MS_FIELD_NUMBER = 1;
 
-        private float e2ELatencyMs_ = 0F;
+        private float e2ELatencyMs_;
 
         /**
          * <code>float e2e_latency_ms = 1;</code>
@@ -61775,10 +64338,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (java.lang.Float.floatToRawIntBits(e2ELatencyMs_) != 0) {
+            if (e2ELatencyMs_ != 0F) {
                 output.writeFloat(1, e2ELatencyMs_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -61787,10 +64350,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (java.lang.Float.floatToRawIntBits(e2ELatencyMs_) != 0) {
+            if (e2ELatencyMs_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, e2ELatencyMs_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -61806,7 +64369,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Constraint_SLA_Latency other = (context.ContextOuterClass.Constraint_SLA_Latency) obj;
             if (java.lang.Float.floatToIntBits(getE2ELatencyMs()) != java.lang.Float.floatToIntBits(other.getE2ELatencyMs()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -61820,7 +64383,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + E2E_LATENCY_MS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getE2ELatencyMs());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -61914,16 +64477,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Latency.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 e2ELatencyMs_ = 0F;
                 return this;
             }
@@ -61950,18 +64519,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Latency buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Latency result = new context.ContextOuterClass.Constraint_SLA_Latency(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.e2ELatencyMs_ = e2ELatencyMs_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Latency result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.e2ELatencyMs_ = e2ELatencyMs_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -61980,7 +64570,7 @@ public final class ContextOuterClass {
                 if (other.getE2ELatencyMs() != 0F) {
                     setE2ELatencyMs(other.getE2ELatencyMs());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -61992,47 +64582,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_SLA_Latency parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 13:
-                                {
-                                    e2ELatencyMs_ = input.readFloat();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 13
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Latency) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private float e2ELatencyMs_;
 
             /**
@@ -62051,7 +64614,6 @@ public final class ContextOuterClass {
              */
             public Builder setE2ELatencyMs(float value) {
                 e2ELatencyMs_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -62061,7 +64623,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearE2ELatencyMs() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 e2ELatencyMs_ = 0F;
                 onChanged();
                 return this;
@@ -62094,17 +64655,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Latency parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_SLA_Latency(input, extensionRegistry);
             }
         };
 
@@ -62155,6 +64706,49 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Capacity();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_SLA_Capacity(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 13:
+                            {
+                                capacityGbps_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
         }
@@ -62166,7 +64760,7 @@ public final class ContextOuterClass {
 
         public static final int CAPACITY_GBPS_FIELD_NUMBER = 1;
 
-        private float capacityGbps_ = 0F;
+        private float capacityGbps_;
 
         /**
          * <code>float capacity_gbps = 1;</code>
@@ -62192,10 +64786,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (java.lang.Float.floatToRawIntBits(capacityGbps_) != 0) {
+            if (capacityGbps_ != 0F) {
                 output.writeFloat(1, capacityGbps_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -62204,10 +64798,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (java.lang.Float.floatToRawIntBits(capacityGbps_) != 0) {
+            if (capacityGbps_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, capacityGbps_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -62223,7 +64817,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Constraint_SLA_Capacity other = (context.ContextOuterClass.Constraint_SLA_Capacity) obj;
             if (java.lang.Float.floatToIntBits(getCapacityGbps()) != java.lang.Float.floatToIntBits(other.getCapacityGbps()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -62237,7 +64831,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + CAPACITY_GBPS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getCapacityGbps());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -62331,16 +64925,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 capacityGbps_ = 0F;
                 return this;
             }
@@ -62367,18 +64967,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Capacity buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Capacity result = new context.ContextOuterClass.Constraint_SLA_Capacity(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.capacityGbps_ = capacityGbps_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Capacity result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.capacityGbps_ = capacityGbps_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -62397,7 +65018,7 @@ public final class ContextOuterClass {
                 if (other.getCapacityGbps() != 0F) {
                     setCapacityGbps(other.getCapacityGbps());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -62409,47 +65030,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_SLA_Capacity parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 13:
-                                {
-                                    capacityGbps_ = input.readFloat();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 13
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Capacity) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private float capacityGbps_;
 
             /**
@@ -62468,7 +65062,6 @@ public final class ContextOuterClass {
              */
             public Builder setCapacityGbps(float value) {
                 capacityGbps_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -62478,7 +65071,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearCapacityGbps() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 capacityGbps_ = 0F;
                 onChanged();
                 return this;
@@ -62511,17 +65103,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Capacity parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_SLA_Capacity(input, extensionRegistry);
             }
         };
 
@@ -62588,6 +65170,59 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Availability();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_SLA_Availability(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                numDisjointPaths_ = input.readUInt32();
+                                break;
+                            }
+                        case 16:
+                            {
+                                allActive_ = input.readBool();
+                                break;
+                            }
+                        case 29:
+                            {
+                                availability_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
         }
@@ -62599,7 +65234,7 @@ public final class ContextOuterClass {
 
         public static final int NUM_DISJOINT_PATHS_FIELD_NUMBER = 1;
 
-        private int numDisjointPaths_ = 0;
+        private int numDisjointPaths_;
 
         /**
          * <code>uint32 num_disjoint_paths = 1;</code>
@@ -62612,7 +65247,7 @@ public final class ContextOuterClass {
 
         public static final int ALL_ACTIVE_FIELD_NUMBER = 2;
 
-        private boolean allActive_ = false;
+        private boolean allActive_;
 
         /**
          * <code>bool all_active = 2;</code>
@@ -62625,7 +65260,7 @@ public final class ContextOuterClass {
 
         public static final int AVAILABILITY_FIELD_NUMBER = 3;
 
-        private float availability_ = 0F;
+        private float availability_;
 
         /**
          * <pre>
@@ -62661,10 +65296,10 @@ public final class ContextOuterClass {
             if (allActive_ != false) {
                 output.writeBool(2, allActive_);
             }
-            if (java.lang.Float.floatToRawIntBits(availability_) != 0) {
+            if (availability_ != 0F) {
                 output.writeFloat(3, availability_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -62679,10 +65314,10 @@ public final class ContextOuterClass {
             if (allActive_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, allActive_);
             }
-            if (java.lang.Float.floatToRawIntBits(availability_) != 0) {
+            if (availability_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, availability_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -62702,7 +65337,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getAvailability()) != java.lang.Float.floatToIntBits(other.getAvailability()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -62720,7 +65355,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAllActive());
             hash = (37 * hash) + AVAILABILITY_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getAvailability());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -62814,16 +65449,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Availability.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 numDisjointPaths_ = 0;
                 allActive_ = false;
                 availability_ = 0F;
@@ -62852,24 +65493,41 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Availability buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Availability result = new context.ContextOuterClass.Constraint_SLA_Availability(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.numDisjointPaths_ = numDisjointPaths_;
+                result.allActive_ = allActive_;
+                result.availability_ = availability_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Availability result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.numDisjointPaths_ = numDisjointPaths_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.allActive_ = allActive_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.availability_ = availability_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -62894,7 +65552,7 @@ public final class ContextOuterClass {
                 if (other.getAvailability() != 0F) {
                     setAvailability(other.getAvailability());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -62906,61 +65564,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_SLA_Availability parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    numDisjointPaths_ = input.readUInt32();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 16:
-                                {
-                                    allActive_ = input.readBool();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 29:
-                                {
-                                    availability_ = input.readFloat();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 29
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Availability) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int numDisjointPaths_;
 
             /**
@@ -62979,7 +65596,6 @@ public final class ContextOuterClass {
              */
             public Builder setNumDisjointPaths(int value) {
                 numDisjointPaths_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -62989,7 +65605,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearNumDisjointPaths() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 numDisjointPaths_ = 0;
                 onChanged();
                 return this;
@@ -63013,7 +65628,6 @@ public final class ContextOuterClass {
              */
             public Builder setAllActive(boolean value) {
                 allActive_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -63023,7 +65637,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAllActive() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 allActive_ = false;
                 onChanged();
                 return this;
@@ -63055,7 +65668,6 @@ public final class ContextOuterClass {
              */
             public Builder setAvailability(float value) {
                 availability_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -63069,7 +65681,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAvailability() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 availability_ = 0F;
                 onChanged();
                 return this;
@@ -63102,17 +65713,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Availability parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_SLA_Availability(input, extensionRegistry);
             }
         };
 
@@ -63190,6 +65791,73 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Isolation_level();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_SLA_Isolation_level(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    isolationLevel_ = new java.util.ArrayList<java.lang.Integer>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                isolationLevel_.add(rawValue);
+                                break;
+                            }
+                        case 10:
+                            {
+                                int length = input.readRawVarint32();
+                                int oldLimit = input.pushLimit(length);
+                                while (input.getBytesUntilLimit() > 0) {
+                                    int rawValue = input.readEnum();
+                                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                        isolationLevel_ = new java.util.ArrayList<java.lang.Integer>();
+                                        mutable_bitField0_ |= 0x00000001;
+                                    }
+                                    isolationLevel_.add(rawValue);
+                                }
+                                input.popLimit(oldLimit);
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
         }
@@ -63201,13 +65869,13 @@ public final class ContextOuterClass {
 
         public static final int ISOLATION_LEVEL_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<java.lang.Integer> isolationLevel_;
 
         private static final com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum> isolationLevel_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>() {
 
             public context.ContextOuterClass.IsolationLevelEnum convert(java.lang.Integer from) {
-                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.forNumber(from);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.valueOf(from);
                 return result == null ? context.ContextOuterClass.IsolationLevelEnum.UNRECOGNIZED : result;
             }
         };
@@ -63284,7 +65952,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < isolationLevel_.size(); i++) {
                 output.writeEnumNoTag(isolationLevel_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -63305,7 +65973,7 @@ public final class ContextOuterClass {
                 }
                 isolationLevelMemoizedSerializedSize = dataSize;
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -63321,7 +65989,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Constraint_SLA_Isolation_level other = (context.ContextOuterClass.Constraint_SLA_Isolation_level) obj;
             if (!isolationLevel_.equals(other.isolationLevel_))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -63337,7 +66005,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ISOLATION_LEVEL_FIELD_NUMBER;
                 hash = (53 * hash) + isolationLevel_.hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -63431,16 +66099,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 isolationLevel_ = java.util.Collections.emptyList();
                 bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
@@ -63468,24 +66142,44 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Isolation_level buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Isolation_level result = new context.ContextOuterClass.Constraint_SLA_Isolation_level(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Constraint_SLA_Isolation_level result) {
+                int from_bitField0_ = bitField0_;
                 if (((bitField0_ & 0x00000001) != 0)) {
                     isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
                     bitField0_ = (bitField0_ & ~0x00000001);
                 }
                 result.isolationLevel_ = isolationLevel_;
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Isolation_level result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -63511,7 +66205,7 @@ public final class ContextOuterClass {
                     }
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -63523,56 +66217,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_SLA_Isolation_level parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    int tmpRaw = input.readEnum();
-                                    ensureIsolationLevelIsMutable();
-                                    isolationLevel_.add(tmpRaw);
-                                    break;
-                                }
-                            // case 8
-                            case 10:
-                                {
-                                    int length = input.readRawVarint32();
-                                    int oldLimit = input.pushLimit(length);
-                                    while (input.getBytesUntilLimit() > 0) {
-                                        int tmpRaw = input.readEnum();
-                                        ensureIsolationLevelIsMutable();
-                                        isolationLevel_.add(tmpRaw);
-                                    }
-                                    input.popLimit(oldLimit);
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Isolation_level) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -63687,8 +66342,8 @@ public final class ContextOuterClass {
 
             /**
              * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-             * @param index The index to set the value at.
-             * @param value The enum numeric value on the wire for isolationLevel to set.
+             * @param index The index of the value to return.
+             * @return The enum numeric value on the wire of isolationLevel at the given index.
              * @return This builder for chaining.
              */
             public Builder setIsolationLevelValue(int index, int value) {
@@ -63751,17 +66406,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Isolation_level parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_SLA_Isolation_level(input, extensionRegistry);
             }
         };
 
@@ -63890,6 +66535,86 @@ public final class ContextOuterClass {
             return new Constraint_Exclusions();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_Exclusions(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                isPermanent_ = input.readBool();
+                                break;
+                            }
+                        case 18:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                deviceIds_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                endpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
+                                    linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
+                                    mutable_bitField0_ |= 0x00000004;
+                                }
+                                linkIds_.add(input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000004) != 0)) {
+                    linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
         }
@@ -63901,7 +66626,7 @@ public final class ContextOuterClass {
 
         public static final int IS_PERMANENT_FIELD_NUMBER = 1;
 
-        private boolean isPermanent_ = false;
+        private boolean isPermanent_;
 
         /**
          * <code>bool is_permanent = 1;</code>
@@ -63914,7 +66639,6 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_IDS_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
 
         /**
@@ -63959,7 +66683,6 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_IDS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_;
 
         /**
@@ -64004,7 +66727,6 @@ public final class ContextOuterClass {
 
         public static final int LINK_IDS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
 
         /**
@@ -64074,7 +66796,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 output.writeMessage(4, linkIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -64095,7 +66817,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -64117,7 +66839,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getLinkIdsList().equals(other.getLinkIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -64143,7 +66865,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -64237,38 +66959,44 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_Exclusions.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDeviceIdsFieldBuilder();
+                    getEndpointIdsFieldBuilder();
+                    getLinkIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 isPermanent_ = false;
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    deviceIds_ = null;
                     deviceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000002);
                 if (endpointIdsBuilder_ == null) {
                     endpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    endpointIds_ = null;
                     endpointIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
                 } else {
-                    linkIds_ = null;
                     linkIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
                 return this;
             }
 
@@ -64294,49 +67022,67 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_Exclusions buildPartial() {
                 context.ContextOuterClass.Constraint_Exclusions result = new context.ContextOuterClass.Constraint_Exclusions(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Constraint_Exclusions result) {
+                int from_bitField0_ = bitField0_;
+                result.isPermanent_ = isPermanent_;
                 if (deviceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.deviceIds_ = deviceIds_;
                 } else {
                     result.deviceIds_ = deviceIdsBuilder_.build();
                 }
                 if (endpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.endpointIds_ = endpointIds_;
                 } else {
                     result.endpointIds_ = endpointIdsBuilder_.build();
                 }
                 if (linkIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.linkIds_ = linkIds_;
                 } else {
                     result.linkIds_ = linkIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_Exclusions result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.isPermanent_ = isPermanent_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -64359,7 +67105,7 @@ public final class ContextOuterClass {
                     if (!other.deviceIds_.isEmpty()) {
                         if (deviceIds_.isEmpty()) {
                             deviceIds_ = other.deviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureDeviceIdsIsMutable();
                             deviceIds_.addAll(other.deviceIds_);
@@ -64372,7 +67118,7 @@ public final class ContextOuterClass {
                             deviceIdsBuilder_.dispose();
                             deviceIdsBuilder_ = null;
                             deviceIds_ = other.deviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null;
                         } else {
                             deviceIdsBuilder_.addAllMessages(other.deviceIds_);
@@ -64383,7 +67129,7 @@ public final class ContextOuterClass {
                     if (!other.endpointIds_.isEmpty()) {
                         if (endpointIds_.isEmpty()) {
                             endpointIds_ = other.endpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureEndpointIdsIsMutable();
                             endpointIds_.addAll(other.endpointIds_);
@@ -64396,7 +67142,7 @@ public final class ContextOuterClass {
                             endpointIdsBuilder_.dispose();
                             endpointIdsBuilder_ = null;
                             endpointIds_ = other.endpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             endpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEndpointIdsFieldBuilder() : null;
                         } else {
                             endpointIdsBuilder_.addAllMessages(other.endpointIds_);
@@ -64407,7 +67153,7 @@ public final class ContextOuterClass {
                     if (!other.linkIds_.isEmpty()) {
                         if (linkIds_.isEmpty()) {
                             linkIds_ = other.linkIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureLinkIdsIsMutable();
                             linkIds_.addAll(other.linkIds_);
@@ -64420,14 +67166,14 @@ public final class ContextOuterClass {
                             linkIdsBuilder_.dispose();
                             linkIdsBuilder_ = null;
                             linkIds_ = other.linkIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null;
                         } else {
                             linkIdsBuilder_.addAllMessages(other.linkIds_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -64439,78 +67185,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_Exclusions parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    isPermanent_ = input.readBool();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 18:
-                                {
-                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-                                    if (deviceIdsBuilder_ == null) {
-                                        ensureDeviceIdsIsMutable();
-                                        deviceIds_.add(m);
-                                    } else {
-                                        deviceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                    if (endpointIdsBuilder_ == null) {
-                                        ensureEndpointIdsIsMutable();
-                                        endpointIds_.add(m);
-                                    } else {
-                                        endpointIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-                                    if (linkIdsBuilder_ == null) {
-                                        ensureLinkIdsIsMutable();
-                                        linkIds_.add(m);
-                                    } else {
-                                        linkIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_Exclusions) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -64534,7 +67219,6 @@ public final class ContextOuterClass {
              */
             public Builder setIsPermanent(boolean value) {
                 isPermanent_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -64544,7 +67228,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIsPermanent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 isPermanent_ = false;
                 onChanged();
                 return this;
@@ -64553,9 +67236,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ = java.util.Collections.emptyList();
 
             private void ensureDeviceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -64707,7 +67390,7 @@ public final class ContextOuterClass {
             public Builder clearDeviceIds() {
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     deviceIdsBuilder_.clear();
@@ -64781,7 +67464,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsFieldBuilder() {
                 if (deviceIdsBuilder_ == null) {
-                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     deviceIds_ = null;
                 }
                 return deviceIdsBuilder_;
@@ -64790,9 +67473,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_ = java.util.Collections.emptyList();
 
             private void ensureEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(endpointIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -64944,7 +67627,7 @@ public final class ContextOuterClass {
             public Builder clearEndpointIds() {
                 if (endpointIdsBuilder_ == null) {
                     endpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     endpointIdsBuilder_.clear();
@@ -65018,7 +67701,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsFieldBuilder() {
                 if (endpointIdsBuilder_ == null) {
-                    endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(endpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(endpointIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     endpointIds_ = null;
                 }
                 return endpointIdsBuilder_;
@@ -65027,9 +67710,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.LinkId> linkIds_ = java.util.Collections.emptyList();
 
             private void ensureLinkIdsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -65181,7 +67864,7 @@ public final class ContextOuterClass {
             public Builder clearLinkIds() {
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     linkIdsBuilder_.clear();
@@ -65255,7 +67938,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsFieldBuilder() {
                 if (linkIdsBuilder_ == null) {
-                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     linkIds_ = null;
                 }
                 return linkIdsBuilder_;
@@ -65288,17 +67971,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_Exclusions parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_Exclusions(input, extensionRegistry);
             }
         };
 
@@ -65485,7 +68158,7 @@ public final class ContextOuterClass {
          */
         context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder();
 
-        context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase();
+        public context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase();
     }
 
     /**
@@ -65511,6 +68184,176 @@ public final class ContextOuterClass {
             return new Constraint();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                action_ = rawValue;
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.Constraint_Custom.Builder subBuilder = null;
+                                if (constraintCase_ == 2) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_Custom) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_Custom.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Custom) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 2;
+                                break;
+                            }
+                        case 26:
+                            {
+                                context.ContextOuterClass.Constraint_Schedule.Builder subBuilder = null;
+                                if (constraintCase_ == 3) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_Schedule) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_Schedule.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Schedule) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 3;
+                                break;
+                            }
+                        case 34:
+                            {
+                                context.ContextOuterClass.Constraint_EndPointLocation.Builder subBuilder = null;
+                                if (constraintCase_ == 4) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_EndPointLocation) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_EndPointLocation.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 4;
+                                break;
+                            }
+                        case 42:
+                            {
+                                context.ContextOuterClass.Constraint_EndPointPriority.Builder subBuilder = null;
+                                if (constraintCase_ == 5) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_EndPointPriority) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_EndPointPriority.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 5;
+                                break;
+                            }
+                        case 50:
+                            {
+                                context.ContextOuterClass.Constraint_SLA_Capacity.Builder subBuilder = null;
+                                if (constraintCase_ == 6) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Capacity.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 6;
+                                break;
+                            }
+                        case 58:
+                            {
+                                context.ContextOuterClass.Constraint_SLA_Latency.Builder subBuilder = null;
+                                if (constraintCase_ == 7) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Latency) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Latency.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 7;
+                                break;
+                            }
+                        case 66:
+                            {
+                                context.ContextOuterClass.Constraint_SLA_Availability.Builder subBuilder = null;
+                                if (constraintCase_ == 8) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Availability) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Availability.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 8;
+                                break;
+                            }
+                        case 74:
+                            {
+                                context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder subBuilder = null;
+                                if (constraintCase_ == 9) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Isolation_level.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 9;
+                                break;
+                            }
+                        case 82:
+                            {
+                                context.ContextOuterClass.Constraint_Exclusions.Builder subBuilder = null;
+                                if (constraintCase_ == 10) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_Exclusions) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_Exclusions.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Exclusions) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 10;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
         }
@@ -65522,7 +68365,6 @@ public final class ContextOuterClass {
 
         private int constraintCase_ = 0;
 
-        @SuppressWarnings("serial")
         private java.lang.Object constraint_;
 
         public enum ConstraintCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -65592,7 +68434,7 @@ public final class ContextOuterClass {
 
         public static final int ACTION_FIELD_NUMBER = 1;
 
-        private int action_ = 0;
+        private int action_;
 
         /**
          * <code>.context.ConstraintActionEnum action = 1;</code>
@@ -65609,7 +68451,8 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConstraintActionEnum getAction() {
-            context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.forNumber(action_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.valueOf(action_);
             return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
         }
 
@@ -65964,7 +68807,7 @@ public final class ContextOuterClass {
             if (constraintCase_ == 10) {
                 output.writeMessage(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -66003,7 +68846,7 @@ public final class ContextOuterClass {
             if (constraintCase_ == 10) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -66061,7 +68904,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -66115,7 +68958,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -66209,44 +69052,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 action_ = 0;
-                if (customBuilder_ != null) {
-                    customBuilder_.clear();
-                }
-                if (scheduleBuilder_ != null) {
-                    scheduleBuilder_.clear();
-                }
-                if (endpointLocationBuilder_ != null) {
-                    endpointLocationBuilder_.clear();
-                }
-                if (endpointPriorityBuilder_ != null) {
-                    endpointPriorityBuilder_.clear();
-                }
-                if (slaCapacityBuilder_ != null) {
-                    slaCapacityBuilder_.clear();
-                }
-                if (slaLatencyBuilder_ != null) {
-                    slaLatencyBuilder_.clear();
-                }
-                if (slaAvailabilityBuilder_ != null) {
-                    slaAvailabilityBuilder_.clear();
-                }
-                if (slaIsolationBuilder_ != null) {
-                    slaIsolationBuilder_.clear();
-                }
-                if (exclusionsBuilder_ != null) {
-                    exclusionsBuilder_.clear();
-                }
                 constraintCase_ = 0;
                 constraint_ = null;
                 return this;
@@ -66274,51 +69096,103 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint buildPartial() {
                 context.ContextOuterClass.Constraint result = new context.ContextOuterClass.Constraint(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                buildPartialOneofs(result);
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartial0(context.ContextOuterClass.Constraint result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.action_ = action_;
-                }
-            }
-
-            private void buildPartialOneofs(context.ContextOuterClass.Constraint result) {
-                result.constraintCase_ = constraintCase_;
-                result.constraint_ = this.constraint_;
-                if (constraintCase_ == 2 && customBuilder_ != null) {
-                    result.constraint_ = customBuilder_.build();
+                result.action_ = action_;
+                if (constraintCase_ == 2) {
+                    if (customBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = customBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 3 && scheduleBuilder_ != null) {
-                    result.constraint_ = scheduleBuilder_.build();
+                if (constraintCase_ == 3) {
+                    if (scheduleBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = scheduleBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 4 && endpointLocationBuilder_ != null) {
-                    result.constraint_ = endpointLocationBuilder_.build();
+                if (constraintCase_ == 4) {
+                    if (endpointLocationBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = endpointLocationBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 5 && endpointPriorityBuilder_ != null) {
-                    result.constraint_ = endpointPriorityBuilder_.build();
+                if (constraintCase_ == 5) {
+                    if (endpointPriorityBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = endpointPriorityBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 6 && slaCapacityBuilder_ != null) {
-                    result.constraint_ = slaCapacityBuilder_.build();
+                if (constraintCase_ == 6) {
+                    if (slaCapacityBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = slaCapacityBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 7 && slaLatencyBuilder_ != null) {
-                    result.constraint_ = slaLatencyBuilder_.build();
+                if (constraintCase_ == 7) {
+                    if (slaLatencyBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = slaLatencyBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 8 && slaAvailabilityBuilder_ != null) {
-                    result.constraint_ = slaAvailabilityBuilder_.build();
+                if (constraintCase_ == 8) {
+                    if (slaAvailabilityBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = slaAvailabilityBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 9 && slaIsolationBuilder_ != null) {
-                    result.constraint_ = slaIsolationBuilder_.build();
+                if (constraintCase_ == 9) {
+                    if (slaIsolationBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = slaIsolationBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 10 && exclusionsBuilder_ != null) {
-                    result.constraint_ = exclusionsBuilder_.build();
+                if (constraintCase_ == 10) {
+                    if (exclusionsBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = exclusionsBuilder_.build();
+                    }
                 }
+                result.constraintCase_ = constraintCase_;
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -66388,7 +69262,7 @@ public final class ContextOuterClass {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -66400,105 +69274,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    action_ = input.readEnum();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 18:
-                                {
-                                    input.readMessage(getCustomFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 2;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getScheduleFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 3;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    input.readMessage(getEndpointLocationFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 4;
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    input.readMessage(getEndpointPriorityFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 5;
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    input.readMessage(getSlaCapacityFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 6;
-                                    break;
-                                }
-                            // case 50
-                            case 58:
-                                {
-                                    input.readMessage(getSlaLatencyFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 7;
-                                    break;
-                                }
-                            // case 58
-                            case 66:
-                                {
-                                    input.readMessage(getSlaAvailabilityFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 8;
-                                    break;
-                                }
-                            // case 66
-                            case 74:
-                                {
-                                    input.readMessage(getSlaIsolationFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 9;
-                                    break;
-                                }
-                            // case 74
-                            case 82:
-                                {
-                                    input.readMessage(getExclusionsFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 10;
-                                    break;
-                                }
-                            // case 82
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -66517,8 +69303,6 @@ public final class ContextOuterClass {
                 return this;
             }
 
-            private int bitField0_;
-
             private int action_ = 0;
 
             /**
@@ -66537,7 +69321,6 @@ public final class ContextOuterClass {
              */
             public Builder setActionValue(int value) {
                 action_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -66548,7 +69331,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ConstraintActionEnum getAction() {
-                context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.forNumber(action_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.valueOf(action_);
                 return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
             }
 
@@ -66561,7 +69345,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000001;
                 action_ = value.getNumber();
                 onChanged();
                 return this;
@@ -66572,7 +69355,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAction() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 action_ = 0;
                 onChanged();
                 return this;
@@ -66653,9 +69435,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 2) {
                         customBuilder_.mergeFrom(value);
-                    } else {
-                        customBuilder_.setMessage(value);
                     }
+                    customBuilder_.setMessage(value);
                 }
                 constraintCase_ = 2;
                 return this;
@@ -66716,6 +69497,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 2;
                 onChanged();
+                ;
                 return customBuilder_;
             }
 
@@ -66794,9 +69576,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 3) {
                         scheduleBuilder_.mergeFrom(value);
-                    } else {
-                        scheduleBuilder_.setMessage(value);
                     }
+                    scheduleBuilder_.setMessage(value);
                 }
                 constraintCase_ = 3;
                 return this;
@@ -66857,6 +69638,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 3;
                 onChanged();
+                ;
                 return scheduleBuilder_;
             }
 
@@ -66935,9 +69717,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 4) {
                         endpointLocationBuilder_.mergeFrom(value);
-                    } else {
-                        endpointLocationBuilder_.setMessage(value);
                     }
+                    endpointLocationBuilder_.setMessage(value);
                 }
                 constraintCase_ = 4;
                 return this;
@@ -66998,6 +69779,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 4;
                 onChanged();
+                ;
                 return endpointLocationBuilder_;
             }
 
@@ -67076,9 +69858,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 5) {
                         endpointPriorityBuilder_.mergeFrom(value);
-                    } else {
-                        endpointPriorityBuilder_.setMessage(value);
                     }
+                    endpointPriorityBuilder_.setMessage(value);
                 }
                 constraintCase_ = 5;
                 return this;
@@ -67139,6 +69920,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 5;
                 onChanged();
+                ;
                 return endpointPriorityBuilder_;
             }
 
@@ -67217,9 +69999,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 6) {
                         slaCapacityBuilder_.mergeFrom(value);
-                    } else {
-                        slaCapacityBuilder_.setMessage(value);
                     }
+                    slaCapacityBuilder_.setMessage(value);
                 }
                 constraintCase_ = 6;
                 return this;
@@ -67280,6 +70061,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 6;
                 onChanged();
+                ;
                 return slaCapacityBuilder_;
             }
 
@@ -67358,9 +70140,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 7) {
                         slaLatencyBuilder_.mergeFrom(value);
-                    } else {
-                        slaLatencyBuilder_.setMessage(value);
                     }
+                    slaLatencyBuilder_.setMessage(value);
                 }
                 constraintCase_ = 7;
                 return this;
@@ -67421,6 +70202,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 7;
                 onChanged();
+                ;
                 return slaLatencyBuilder_;
             }
 
@@ -67499,9 +70281,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 8) {
                         slaAvailabilityBuilder_.mergeFrom(value);
-                    } else {
-                        slaAvailabilityBuilder_.setMessage(value);
                     }
+                    slaAvailabilityBuilder_.setMessage(value);
                 }
                 constraintCase_ = 8;
                 return this;
@@ -67562,6 +70343,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 8;
                 onChanged();
+                ;
                 return slaAvailabilityBuilder_;
             }
 
@@ -67640,9 +70422,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 9) {
                         slaIsolationBuilder_.mergeFrom(value);
-                    } else {
-                        slaIsolationBuilder_.setMessage(value);
                     }
+                    slaIsolationBuilder_.setMessage(value);
                 }
                 constraintCase_ = 9;
                 return this;
@@ -67703,6 +70484,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 9;
                 onChanged();
+                ;
                 return slaIsolationBuilder_;
             }
 
@@ -67781,9 +70563,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 10) {
                         exclusionsBuilder_.mergeFrom(value);
-                    } else {
-                        exclusionsBuilder_.setMessage(value);
                     }
+                    exclusionsBuilder_.setMessage(value);
                 }
                 constraintCase_ = 10;
                 return this;
@@ -67844,6 +70625,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 10;
                 onChanged();
+                ;
                 return exclusionsBuilder_;
             }
 
@@ -67874,17 +70656,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint(input, extensionRegistry);
             }
         };
 
@@ -67969,6 +70741,68 @@ public final class ContextOuterClass {
             return new TeraFlowController();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private TeraFlowController(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                ipAddress_ = s;
+                                break;
+                            }
+                        case 24:
+                            {
+                                port_ = input.readUInt32();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
         }
@@ -68005,13 +70839,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            return getContextId();
         }
 
         public static final int IP_ADDRESS_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object ipAddress_ = "";
+        private volatile java.lang.Object ipAddress_;
 
         /**
          * <code>string ip_address = 2;</code>
@@ -68048,7 +70881,7 @@ public final class ContextOuterClass {
 
         public static final int PORT_FIELD_NUMBER = 3;
 
-        private int port_ = 0;
+        private int port_;
 
         /**
          * <code>uint32 port = 3;</code>
@@ -68077,13 +70910,13 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 output.writeMessage(1, getContextId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipAddress_)) {
+            if (!getIpAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ipAddress_);
             }
             if (port_ != 0) {
                 output.writeUInt32(3, port_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -68095,13 +70928,13 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipAddress_)) {
+            if (!getIpAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ipAddress_);
             }
             if (port_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, port_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -68125,7 +70958,7 @@ public final class ContextOuterClass {
                 return false;
             if (getPort() != other.getPort())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -68145,7 +70978,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getIpAddress().hashCode();
             hash = (37 * hash) + PORT_FIELD_NUMBER;
             hash = (53 * hash) + getPort();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -68243,19 +71076,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.TeraFlowController.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
                 ipAddress_ = "";
@@ -68285,24 +71125,45 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.TeraFlowController buildPartial() {
                 context.ContextOuterClass.TeraFlowController result = new context.ContextOuterClass.TeraFlowController(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
                 }
+                result.ipAddress_ = ipAddress_;
+                result.port_ = port_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.TeraFlowController result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.ipAddress_ = ipAddress_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.port_ = port_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -68323,13 +71184,12 @@ public final class ContextOuterClass {
                 }
                 if (!other.getIpAddress().isEmpty()) {
                     ipAddress_ = other.ipAddress_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.getPort() != 0) {
                     setPort(other.getPort());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -68341,61 +71201,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.TeraFlowController parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    ipAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 24:
-                                {
-                                    port_ = input.readUInt32();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.TeraFlowController) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
@@ -68405,7 +71224,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return contextIdBuilder_ != null || contextId_ != null;
             }
 
             /**
@@ -68429,11 +71248,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -68443,11 +71261,10 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -68456,16 +71273,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
                     } else {
                         contextId_ = value;
                     }
+                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -68473,13 +71289,13 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -68487,7 +71303,6 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -68557,7 +71372,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 ipAddress_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -68568,7 +71382,6 @@ public final class ContextOuterClass {
              */
             public Builder clearIpAddress() {
                 ipAddress_ = getDefaultInstance().getIpAddress();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -68584,7 +71397,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 ipAddress_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -68607,7 +71419,6 @@ public final class ContextOuterClass {
              */
             public Builder setPort(int value) {
                 port_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -68617,7 +71428,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearPort() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 port_ = 0;
                 onChanged();
                 return this;
@@ -68650,17 +71460,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public TeraFlowController parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new TeraFlowController(input, extensionRegistry);
             }
         };
 
@@ -68728,56 +71528,7192 @@ public final class ContextOuterClass {
             return new AuthenticationResult();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AuthenticationResult(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                authenticated_ = input.readBool();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
+        }
+
+        public static final int CONTEXT_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.ContextId contextId_;
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        @java.lang.Override
+        public boolean hasContextId() {
+            return contextId_ != null;
+        }
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextId getContextId() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+            return getContextId();
+        }
+
+        public static final int AUTHENTICATED_FIELD_NUMBER = 2;
+
+        private boolean authenticated_;
+
+        /**
+         * <code>bool authenticated = 2;</code>
+         * @return The authenticated.
+         */
+        @java.lang.Override
+        public boolean getAuthenticated() {
+            return authenticated_;
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (contextId_ != null) {
+                output.writeMessage(1, getContextId());
+            }
+            if (authenticated_ != false) {
+                output.writeBool(2, authenticated_);
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (contextId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
+            }
+            if (authenticated_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, authenticated_);
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.AuthenticationResult)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.AuthenticationResult other = (context.ContextOuterClass.AuthenticationResult) obj;
+            if (hasContextId() != other.hasContextId())
+                return false;
+            if (hasContextId()) {
+                if (!getContextId().equals(other.getContextId()))
+                    return false;
+            }
+            if (getAuthenticated() != other.getAuthenticated())
+                return false;
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasContextId()) {
+                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getContextId().hashCode();
+            }
+            hash = (37 * hash) + AUTHENTICATED_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAuthenticated());
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.AuthenticationResult prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.AuthenticationResult}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.AuthenticationResult)
+        context.ContextOuterClass.AuthenticationResultOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.AuthenticationResult.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
+                    contextIdBuilder_ = null;
+                }
+                authenticated_ = false;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
+                return context.ContextOuterClass.AuthenticationResult.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.AuthenticationResult build() {
+                context.ContextOuterClass.AuthenticationResult result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.AuthenticationResult buildPartial() {
+                context.ContextOuterClass.AuthenticationResult result = new context.ContextOuterClass.AuthenticationResult(this);
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
+                }
+                result.authenticated_ = authenticated_;
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.AuthenticationResult) {
+                    return mergeFrom((context.ContextOuterClass.AuthenticationResult) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.AuthenticationResult other) {
+                if (other == context.ContextOuterClass.AuthenticationResult.getDefaultInstance())
+                    return this;
+                if (other.hasContextId()) {
+                    mergeContextId(other.getContextId());
+                }
+                if (other.getAuthenticated() != false) {
+                    setAuthenticated(other.getAuthenticated());
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.AuthenticationResult parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.AuthenticationResult) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private context.ContextOuterClass.ContextId contextId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return Whether the contextId field is set.
+             */
+            public boolean hasContextId() {
+                return contextIdBuilder_ != null || contextId_ != null;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return The contextId.
+             */
+            public context.ContextOuterClass.ContextId getContextId() {
+                if (contextIdBuilder_ == null) {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                } else {
+                    return contextIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    contextId_ = value;
+                    onChanged();
+                } else {
+                    contextIdBuilder_.setMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
+                if (contextIdBuilder_ == null) {
+                    contextId_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    contextIdBuilder_.setMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
+                    } else {
+                        contextId_ = value;
+                    }
+                    onChanged();
+                } else {
+                    contextIdBuilder_.mergeFrom(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder clearContextId() {
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
+                    contextIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                onChanged();
+                return getContextIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+                if (contextIdBuilder_ != null) {
+                    return contextIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
+                if (contextIdBuilder_ == null) {
+                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
+                    contextId_ = null;
+                }
+                return contextIdBuilder_;
+            }
+
+            private boolean authenticated_;
+
+            /**
+             * <code>bool authenticated = 2;</code>
+             * @return The authenticated.
+             */
+            @java.lang.Override
+            public boolean getAuthenticated() {
+                return authenticated_;
+            }
+
+            /**
+             * <code>bool authenticated = 2;</code>
+             * @param value The authenticated to set.
+             * @return This builder for chaining.
+             */
+            public Builder setAuthenticated(boolean value) {
+                authenticated_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool authenticated = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearAuthenticated() {
+                authenticated_ = false;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.AuthenticationResult)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.AuthenticationResult)
+        private static final context.ContextOuterClass.AuthenticationResult DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.AuthenticationResult();
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<AuthenticationResult> PARSER = new com.google.protobuf.AbstractParser<AuthenticationResult>() {
+
+            @java.lang.Override
+            public AuthenticationResult parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new AuthenticationResult(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<AuthenticationResult> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<AuthenticationResult> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface OpticalConfigIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>string opticalconfig_uuid = 1;</code>
+         * @return The opticalconfigUuid.
+         */
+        java.lang.String getOpticalconfigUuid();
+
+        /**
+         * <code>string opticalconfig_uuid = 1;</code>
+         * @return The bytes for opticalconfigUuid.
+         */
+        com.google.protobuf.ByteString getOpticalconfigUuidBytes();
+    }
+
+    /**
+     * <pre>
+     * ---------------- Experimental ------------------------
+     * </pre>
+     *
+     * Protobuf type {@code context.OpticalConfigId}
+     */
+    public static final class OpticalConfigId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigId)
+    OpticalConfigIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use OpticalConfigId.newBuilder() to construct.
+        private OpticalConfigId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private OpticalConfigId() {
+            opticalconfigUuid_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new OpticalConfigId();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private OpticalConfigId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                opticalconfigUuid_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class);
+        }
+
+        public static final int OPTICALCONFIG_UUID_FIELD_NUMBER = 1;
+
+        private volatile java.lang.Object opticalconfigUuid_;
+
+        /**
+         * <code>string opticalconfig_uuid = 1;</code>
+         * @return The opticalconfigUuid.
+         */
+        @java.lang.Override
+        public java.lang.String getOpticalconfigUuid() {
+            java.lang.Object ref = opticalconfigUuid_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                opticalconfigUuid_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string opticalconfig_uuid = 1;</code>
+         * @return The bytes for opticalconfigUuid.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getOpticalconfigUuidBytes() {
+            java.lang.Object ref = opticalconfigUuid_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                opticalconfigUuid_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (!getOpticalconfigUuidBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, opticalconfigUuid_);
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (!getOpticalconfigUuidBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, opticalconfigUuid_);
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.OpticalConfigId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.OpticalConfigId other = (context.ContextOuterClass.OpticalConfigId) obj;
+            if (!getOpticalconfigUuid().equals(other.getOpticalconfigUuid()))
+                return false;
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            hash = (37 * hash) + OPTICALCONFIG_UUID_FIELD_NUMBER;
+            hash = (53 * hash) + getOpticalconfigUuid().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.OpticalConfigId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * <pre>
+         * ---------------- Experimental ------------------------
+         * </pre>
+         *
+         * Protobuf type {@code context.OpticalConfigId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigId)
+        context.ContextOuterClass.OpticalConfigIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.OpticalConfigId.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                opticalconfigUuid_ = "";
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() {
+                return context.ContextOuterClass.OpticalConfigId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfigId build() {
+                context.ContextOuterClass.OpticalConfigId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfigId buildPartial() {
+                context.ContextOuterClass.OpticalConfigId result = new context.ContextOuterClass.OpticalConfigId(this);
+                result.opticalconfigUuid_ = opticalconfigUuid_;
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.OpticalConfigId) {
+                    return mergeFrom((context.ContextOuterClass.OpticalConfigId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.OpticalConfigId other) {
+                if (other == context.ContextOuterClass.OpticalConfigId.getDefaultInstance())
+                    return this;
+                if (!other.getOpticalconfigUuid().isEmpty()) {
+                    opticalconfigUuid_ = other.opticalconfigUuid_;
+                    onChanged();
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.OpticalConfigId parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.OpticalConfigId) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private java.lang.Object opticalconfigUuid_ = "";
+
+            /**
+             * <code>string opticalconfig_uuid = 1;</code>
+             * @return The opticalconfigUuid.
+             */
+            public java.lang.String getOpticalconfigUuid() {
+                java.lang.Object ref = opticalconfigUuid_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    opticalconfigUuid_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string opticalconfig_uuid = 1;</code>
+             * @return The bytes for opticalconfigUuid.
+             */
+            public com.google.protobuf.ByteString getOpticalconfigUuidBytes() {
+                java.lang.Object ref = opticalconfigUuid_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    opticalconfigUuid_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string opticalconfig_uuid = 1;</code>
+             * @param value The opticalconfigUuid to set.
+             * @return This builder for chaining.
+             */
+            public Builder setOpticalconfigUuid(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                opticalconfigUuid_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string opticalconfig_uuid = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearOpticalconfigUuid() {
+                opticalconfigUuid_ = getDefaultInstance().getOpticalconfigUuid();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string opticalconfig_uuid = 1;</code>
+             * @param value The bytes for opticalconfigUuid to set.
+             * @return This builder for chaining.
+             */
+            public Builder setOpticalconfigUuidBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                opticalconfigUuid_ = value;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.OpticalConfigId)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.OpticalConfigId)
+        private static final context.ContextOuterClass.OpticalConfigId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigId();
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<OpticalConfigId> PARSER = new com.google.protobuf.AbstractParser<OpticalConfigId>() {
+
+            @java.lang.Override
+            public OpticalConfigId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new OpticalConfigId(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<OpticalConfigId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<OpticalConfigId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface OpticalConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfig)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+         * @return Whether the opticalconfigId field is set.
+         */
+        boolean hasOpticalconfigId();
+
+        /**
+         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+         * @return The opticalconfigId.
+         */
+        context.ContextOuterClass.OpticalConfigId getOpticalconfigId();
+
+        /**
+         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+         */
+        context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder();
+
+        /**
+         * <code>string config = 2;</code>
+         * @return The config.
+         */
+        java.lang.String getConfig();
+
+        /**
+         * <code>string config = 2;</code>
+         * @return The bytes for config.
+         */
+        com.google.protobuf.ByteString getConfigBytes();
+    }
+
+    /**
+     * Protobuf type {@code context.OpticalConfig}
+     */
+    public static final class OpticalConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfig)
+    OpticalConfigOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use OpticalConfig.newBuilder() to construct.
+        private OpticalConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private OpticalConfig() {
+            config_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new OpticalConfig();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private OpticalConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.OpticalConfigId.Builder subBuilder = null;
+                                if (opticalconfigId_ != null) {
+                                    subBuilder = opticalconfigId_.toBuilder();
+                                }
+                                opticalconfigId_ = input.readMessage(context.ContextOuterClass.OpticalConfigId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(opticalconfigId_);
+                                    opticalconfigId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                config_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class);
+        }
+
+        public static final int OPTICALCONFIG_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.OpticalConfigId opticalconfigId_;
+
+        /**
+         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+         * @return Whether the opticalconfigId field is set.
+         */
+        @java.lang.Override
+        public boolean hasOpticalconfigId() {
+            return opticalconfigId_ != null;
+        }
+
+        /**
+         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+         * @return The opticalconfigId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() {
+            return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
+        }
+
+        /**
+         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() {
+            return getOpticalconfigId();
+        }
+
+        public static final int CONFIG_FIELD_NUMBER = 2;
+
+        private volatile java.lang.Object config_;
+
+        /**
+         * <code>string config = 2;</code>
+         * @return The config.
+         */
+        @java.lang.Override
+        public java.lang.String getConfig() {
+            java.lang.Object ref = config_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                config_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string config = 2;</code>
+         * @return The bytes for config.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getConfigBytes() {
+            java.lang.Object ref = config_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                config_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (opticalconfigId_ != null) {
+                output.writeMessage(1, getOpticalconfigId());
+            }
+            if (!getConfigBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, config_);
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (opticalconfigId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOpticalconfigId());
+            }
+            if (!getConfigBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, config_);
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.OpticalConfig)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.OpticalConfig other = (context.ContextOuterClass.OpticalConfig) obj;
+            if (hasOpticalconfigId() != other.hasOpticalconfigId())
+                return false;
+            if (hasOpticalconfigId()) {
+                if (!getOpticalconfigId().equals(other.getOpticalconfigId()))
+                    return false;
+            }
+            if (!getConfig().equals(other.getConfig()))
+                return false;
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasOpticalconfigId()) {
+                hash = (37 * hash) + OPTICALCONFIG_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getOpticalconfigId().hashCode();
+            }
+            hash = (37 * hash) + CONFIG_FIELD_NUMBER;
+            hash = (53 * hash) + getConfig().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.OpticalConfig prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.OpticalConfig}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalConfig)
+        context.ContextOuterClass.OpticalConfigOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.OpticalConfig.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                if (opticalconfigIdBuilder_ == null) {
+                    opticalconfigId_ = null;
+                } else {
+                    opticalconfigId_ = null;
+                    opticalconfigIdBuilder_ = null;
+                }
+                config_ = "";
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() {
+                return context.ContextOuterClass.OpticalConfig.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfig build() {
+                context.ContextOuterClass.OpticalConfig result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfig buildPartial() {
+                context.ContextOuterClass.OpticalConfig result = new context.ContextOuterClass.OpticalConfig(this);
+                if (opticalconfigIdBuilder_ == null) {
+                    result.opticalconfigId_ = opticalconfigId_;
+                } else {
+                    result.opticalconfigId_ = opticalconfigIdBuilder_.build();
+                }
+                result.config_ = config_;
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.OpticalConfig) {
+                    return mergeFrom((context.ContextOuterClass.OpticalConfig) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.OpticalConfig other) {
+                if (other == context.ContextOuterClass.OpticalConfig.getDefaultInstance())
+                    return this;
+                if (other.hasOpticalconfigId()) {
+                    mergeOpticalconfigId(other.getOpticalconfigId());
+                }
+                if (!other.getConfig().isEmpty()) {
+                    config_ = other.config_;
+                    onChanged();
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.OpticalConfig parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.OpticalConfig) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private context.ContextOuterClass.OpticalConfigId opticalconfigId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfigId.Builder, context.ContextOuterClass.OpticalConfigIdOrBuilder> opticalconfigIdBuilder_;
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             * @return Whether the opticalconfigId field is set.
+             */
+            public boolean hasOpticalconfigId() {
+                return opticalconfigIdBuilder_ != null || opticalconfigId_ != null;
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             * @return The opticalconfigId.
+             */
+            public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() {
+                if (opticalconfigIdBuilder_ == null) {
+                    return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
+                } else {
+                    return opticalconfigIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) {
+                if (opticalconfigIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    opticalconfigId_ = value;
+                    onChanged();
+                } else {
+                    opticalconfigIdBuilder_.setMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId.Builder builderForValue) {
+                if (opticalconfigIdBuilder_ == null) {
+                    opticalconfigId_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    opticalconfigIdBuilder_.setMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            public Builder mergeOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) {
+                if (opticalconfigIdBuilder_ == null) {
+                    if (opticalconfigId_ != null) {
+                        opticalconfigId_ = context.ContextOuterClass.OpticalConfigId.newBuilder(opticalconfigId_).mergeFrom(value).buildPartial();
+                    } else {
+                        opticalconfigId_ = value;
+                    }
+                    onChanged();
+                } else {
+                    opticalconfigIdBuilder_.mergeFrom(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            public Builder clearOpticalconfigId() {
+                if (opticalconfigIdBuilder_ == null) {
+                    opticalconfigId_ = null;
+                    onChanged();
+                } else {
+                    opticalconfigId_ = null;
+                    opticalconfigIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfigId.Builder getOpticalconfigIdBuilder() {
+                onChanged();
+                return getOpticalconfigIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() {
+                if (opticalconfigIdBuilder_ != null) {
+                    return opticalconfigIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
+                }
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfigId.Builder, context.ContextOuterClass.OpticalConfigIdOrBuilder> getOpticalconfigIdFieldBuilder() {
+                if (opticalconfigIdBuilder_ == null) {
+                    opticalconfigIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfigId.Builder, context.ContextOuterClass.OpticalConfigIdOrBuilder>(getOpticalconfigId(), getParentForChildren(), isClean());
+                    opticalconfigId_ = null;
+                }
+                return opticalconfigIdBuilder_;
+            }
+
+            private java.lang.Object config_ = "";
+
+            /**
+             * <code>string config = 2;</code>
+             * @return The config.
+             */
+            public java.lang.String getConfig() {
+                java.lang.Object ref = config_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    config_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string config = 2;</code>
+             * @return The bytes for config.
+             */
+            public com.google.protobuf.ByteString getConfigBytes() {
+                java.lang.Object ref = config_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    config_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string config = 2;</code>
+             * @param value The config to set.
+             * @return This builder for chaining.
+             */
+            public Builder setConfig(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                config_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string config = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearConfig() {
+                config_ = getDefaultInstance().getConfig();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string config = 2;</code>
+             * @param value The bytes for config to set.
+             * @return This builder for chaining.
+             */
+            public Builder setConfigBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                config_ = value;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.OpticalConfig)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.OpticalConfig)
+        private static final context.ContextOuterClass.OpticalConfig DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfig();
+        }
+
+        public static context.ContextOuterClass.OpticalConfig getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<OpticalConfig> PARSER = new com.google.protobuf.AbstractParser<OpticalConfig>() {
+
+            @java.lang.Override
+            public OpticalConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new OpticalConfig(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<OpticalConfig> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<OpticalConfig> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface OpticalConfigListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.OpticalConfig> getOpticalconfigsList();
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index);
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        int getOpticalconfigsCount();
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.OpticalConfigOrBuilder> getOpticalconfigsOrBuilderList();
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.OpticalConfigList}
+     */
+    public static final class OpticalConfigList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigList)
+    OpticalConfigListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use OpticalConfigList.newBuilder() to construct.
+        private OpticalConfigList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private OpticalConfigList() {
+            opticalconfigs_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new OpticalConfigList();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private OpticalConfigList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    opticalconfigs_ = new java.util.ArrayList<context.ContextOuterClass.OpticalConfig>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                opticalconfigs_.add(input.readMessage(context.ContextOuterClass.OpticalConfig.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    opticalconfigs_ = java.util.Collections.unmodifiableList(opticalconfigs_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class);
+        }
+
+        public static final int OPTICALCONFIGS_FIELD_NUMBER = 1;
+
+        private java.util.List<context.ContextOuterClass.OpticalConfig> opticalconfigs_;
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.OpticalConfig> getOpticalconfigsList() {
+            return opticalconfigs_;
+        }
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.OpticalConfigOrBuilder> getOpticalconfigsOrBuilderList() {
+            return opticalconfigs_;
+        }
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        @java.lang.Override
+        public int getOpticalconfigsCount() {
+            return opticalconfigs_.size();
+        }
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) {
+            return opticalconfigs_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) {
+            return opticalconfigs_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < opticalconfigs_.size(); i++) {
+                output.writeMessage(1, opticalconfigs_.get(i));
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < opticalconfigs_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, opticalconfigs_.get(i));
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.OpticalConfigList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.OpticalConfigList other = (context.ContextOuterClass.OpticalConfigList) obj;
+            if (!getOpticalconfigsList().equals(other.getOpticalconfigsList()))
+                return false;
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (getOpticalconfigsCount() > 0) {
+                hash = (37 * hash) + OPTICALCONFIGS_FIELD_NUMBER;
+                hash = (53 * hash) + getOpticalconfigsList().hashCode();
+            }
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.OpticalConfigList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.OpticalConfigList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigList)
+        context.ContextOuterClass.OpticalConfigListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.OpticalConfigList.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getOpticalconfigsFieldBuilder();
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                if (opticalconfigsBuilder_ == null) {
+                    opticalconfigs_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                    opticalconfigsBuilder_.clear();
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() {
+                return context.ContextOuterClass.OpticalConfigList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfigList build() {
+                context.ContextOuterClass.OpticalConfigList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfigList buildPartial() {
+                context.ContextOuterClass.OpticalConfigList result = new context.ContextOuterClass.OpticalConfigList(this);
+                int from_bitField0_ = bitField0_;
+                if (opticalconfigsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        opticalconfigs_ = java.util.Collections.unmodifiableList(opticalconfigs_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.opticalconfigs_ = opticalconfigs_;
+                } else {
+                    result.opticalconfigs_ = opticalconfigsBuilder_.build();
+                }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.OpticalConfigList) {
+                    return mergeFrom((context.ContextOuterClass.OpticalConfigList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.OpticalConfigList other) {
+                if (other == context.ContextOuterClass.OpticalConfigList.getDefaultInstance())
+                    return this;
+                if (opticalconfigsBuilder_ == null) {
+                    if (!other.opticalconfigs_.isEmpty()) {
+                        if (opticalconfigs_.isEmpty()) {
+                            opticalconfigs_ = other.opticalconfigs_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureOpticalconfigsIsMutable();
+                            opticalconfigs_.addAll(other.opticalconfigs_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.opticalconfigs_.isEmpty()) {
+                        if (opticalconfigsBuilder_.isEmpty()) {
+                            opticalconfigsBuilder_.dispose();
+                            opticalconfigsBuilder_ = null;
+                            opticalconfigs_ = other.opticalconfigs_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            opticalconfigsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalconfigsFieldBuilder() : null;
+                        } else {
+                            opticalconfigsBuilder_.addAllMessages(other.opticalconfigs_);
+                        }
+                    }
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.OpticalConfigList parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.OpticalConfigList) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.OpticalConfig> opticalconfigs_ = java.util.Collections.emptyList();
+
+            private void ensureOpticalconfigsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    opticalconfigs_ = new java.util.ArrayList<context.ContextOuterClass.OpticalConfig>(opticalconfigs_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfig.Builder, context.ContextOuterClass.OpticalConfigOrBuilder> opticalconfigsBuilder_;
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.OpticalConfig> getOpticalconfigsList() {
+                if (opticalconfigsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(opticalconfigs_);
+                } else {
+                    return opticalconfigsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public int getOpticalconfigsCount() {
+                if (opticalconfigsBuilder_ == null) {
+                    return opticalconfigs_.size();
+                } else {
+                    return opticalconfigsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) {
+                if (opticalconfigsBuilder_ == null) {
+                    return opticalconfigs_.get(index);
+                } else {
+                    return opticalconfigsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) {
+                if (opticalconfigsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.set(index, value);
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) {
+                if (opticalconfigsBuilder_ == null) {
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig value) {
+                if (opticalconfigsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.add(value);
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) {
+                if (opticalconfigsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.add(index, value);
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig.Builder builderForValue) {
+                if (opticalconfigsBuilder_ == null) {
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) {
+                if (opticalconfigsBuilder_ == null) {
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder addAllOpticalconfigs(java.lang.Iterable<? extends context.ContextOuterClass.OpticalConfig> values) {
+                if (opticalconfigsBuilder_ == null) {
+                    ensureOpticalconfigsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalconfigs_);
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder clearOpticalconfigs() {
+                if (opticalconfigsBuilder_ == null) {
+                    opticalconfigs_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder removeOpticalconfigs(int index) {
+                if (opticalconfigsBuilder_ == null) {
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.remove(index);
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfig.Builder getOpticalconfigsBuilder(int index) {
+                return getOpticalconfigsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) {
+                if (opticalconfigsBuilder_ == null) {
+                    return opticalconfigs_.get(index);
+                } else {
+                    return opticalconfigsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.OpticalConfigOrBuilder> getOpticalconfigsOrBuilderList() {
+                if (opticalconfigsBuilder_ != null) {
+                    return opticalconfigsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(opticalconfigs_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder() {
+                return getOpticalconfigsFieldBuilder().addBuilder(context.ContextOuterClass.OpticalConfig.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder(int index) {
+                return getOpticalconfigsFieldBuilder().addBuilder(index, context.ContextOuterClass.OpticalConfig.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.OpticalConfig.Builder> getOpticalconfigsBuilderList() {
+                return getOpticalconfigsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfig.Builder, context.ContextOuterClass.OpticalConfigOrBuilder> getOpticalconfigsFieldBuilder() {
+                if (opticalconfigsBuilder_ == null) {
+                    opticalconfigsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfig.Builder, context.ContextOuterClass.OpticalConfigOrBuilder>(opticalconfigs_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    opticalconfigs_ = null;
+                }
+                return opticalconfigsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.OpticalConfigList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.OpticalConfigList)
+        private static final context.ContextOuterClass.OpticalConfigList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigList();
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<OpticalConfigList> PARSER = new com.google.protobuf.AbstractParser<OpticalConfigList>() {
+
+            @java.lang.Override
+            public OpticalConfigList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new OpticalConfigList(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<OpticalConfigList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<OpticalConfigList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface OpticalLinkIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Uuid optical_link_uuid = 1;</code>
+         * @return Whether the opticalLinkUuid field is set.
+         */
+        boolean hasOpticalLinkUuid();
+
+        /**
+         * <code>.context.Uuid optical_link_uuid = 1;</code>
+         * @return The opticalLinkUuid.
+         */
+        context.ContextOuterClass.Uuid getOpticalLinkUuid();
+
+        /**
+         * <code>.context.Uuid optical_link_uuid = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getOpticalLinkUuidOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.OpticalLinkId}
+     */
+    public static final class OpticalLinkId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkId)
+    OpticalLinkIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use OpticalLinkId.newBuilder() to construct.
+        private OpticalLinkId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private OpticalLinkId() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new OpticalLinkId();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private OpticalLinkId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (opticalLinkUuid_ != null) {
+                                    subBuilder = opticalLinkUuid_.toBuilder();
+                                }
+                                opticalLinkUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(opticalLinkUuid_);
+                                    opticalLinkUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_OpticalLinkId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_OpticalLinkId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkId.class, context.ContextOuterClass.OpticalLinkId.Builder.class);
+        }
+
+        public static final int OPTICAL_LINK_UUID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Uuid opticalLinkUuid_;
+
+        /**
+         * <code>.context.Uuid optical_link_uuid = 1;</code>
+         * @return Whether the opticalLinkUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasOpticalLinkUuid() {
+            return opticalLinkUuid_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid optical_link_uuid = 1;</code>
+         * @return The opticalLinkUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getOpticalLinkUuid() {
+            return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_;
+        }
+
+        /**
+         * <code>.context.Uuid optical_link_uuid = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getOpticalLinkUuidOrBuilder() {
+            return getOpticalLinkUuid();
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (opticalLinkUuid_ != null) {
+                output.writeMessage(1, getOpticalLinkUuid());
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (opticalLinkUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOpticalLinkUuid());
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.OpticalLinkId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.OpticalLinkId other = (context.ContextOuterClass.OpticalLinkId) obj;
+            if (hasOpticalLinkUuid() != other.hasOpticalLinkUuid())
+                return false;
+            if (hasOpticalLinkUuid()) {
+                if (!getOpticalLinkUuid().equals(other.getOpticalLinkUuid()))
+                    return false;
+            }
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasOpticalLinkUuid()) {
+                hash = (37 * hash) + OPTICAL_LINK_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getOpticalLinkUuid().hashCode();
+            }
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.OpticalLinkId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.OpticalLinkId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkId)
+        context.ContextOuterClass.OpticalLinkIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_OpticalLinkId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_OpticalLinkId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkId.class, context.ContextOuterClass.OpticalLinkId.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.OpticalLinkId.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuid_ = null;
+                } else {
+                    opticalLinkUuid_ = null;
+                    opticalLinkUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_OpticalLinkId_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalLinkId getDefaultInstanceForType() {
+                return context.ContextOuterClass.OpticalLinkId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalLinkId build() {
+                context.ContextOuterClass.OpticalLinkId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalLinkId buildPartial() {
+                context.ContextOuterClass.OpticalLinkId result = new context.ContextOuterClass.OpticalLinkId(this);
+                if (opticalLinkUuidBuilder_ == null) {
+                    result.opticalLinkUuid_ = opticalLinkUuid_;
+                } else {
+                    result.opticalLinkUuid_ = opticalLinkUuidBuilder_.build();
+                }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.OpticalLinkId) {
+                    return mergeFrom((context.ContextOuterClass.OpticalLinkId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.OpticalLinkId other) {
+                if (other == context.ContextOuterClass.OpticalLinkId.getDefaultInstance())
+                    return this;
+                if (other.hasOpticalLinkUuid()) {
+                    mergeOpticalLinkUuid(other.getOpticalLinkUuid());
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.OpticalLinkId parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.OpticalLinkId) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private context.ContextOuterClass.Uuid opticalLinkUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> opticalLinkUuidBuilder_;
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             * @return Whether the opticalLinkUuid field is set.
+             */
+            public boolean hasOpticalLinkUuid() {
+                return opticalLinkUuidBuilder_ != null || opticalLinkUuid_ != null;
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             * @return The opticalLinkUuid.
+             */
+            public context.ContextOuterClass.Uuid getOpticalLinkUuid() {
+                if (opticalLinkUuidBuilder_ == null) {
+                    return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_;
+                } else {
+                    return opticalLinkUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            public Builder setOpticalLinkUuid(context.ContextOuterClass.Uuid value) {
+                if (opticalLinkUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    opticalLinkUuid_ = value;
+                    onChanged();
+                } else {
+                    opticalLinkUuidBuilder_.setMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            public Builder setOpticalLinkUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuid_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    opticalLinkUuidBuilder_.setMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            public Builder mergeOpticalLinkUuid(context.ContextOuterClass.Uuid value) {
+                if (opticalLinkUuidBuilder_ == null) {
+                    if (opticalLinkUuid_ != null) {
+                        opticalLinkUuid_ = context.ContextOuterClass.Uuid.newBuilder(opticalLinkUuid_).mergeFrom(value).buildPartial();
+                    } else {
+                        opticalLinkUuid_ = value;
+                    }
+                    onChanged();
+                } else {
+                    opticalLinkUuidBuilder_.mergeFrom(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            public Builder clearOpticalLinkUuid() {
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuid_ = null;
+                    onChanged();
+                } else {
+                    opticalLinkUuid_ = null;
+                    opticalLinkUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getOpticalLinkUuidBuilder() {
+                onChanged();
+                return getOpticalLinkUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getOpticalLinkUuidOrBuilder() {
+                if (opticalLinkUuidBuilder_ != null) {
+                    return opticalLinkUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getOpticalLinkUuidFieldBuilder() {
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getOpticalLinkUuid(), getParentForChildren(), isClean());
+                    opticalLinkUuid_ = null;
+                }
+                return opticalLinkUuidBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.OpticalLinkId)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.OpticalLinkId)
+        private static final context.ContextOuterClass.OpticalLinkId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkId();
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<OpticalLinkId> PARSER = new com.google.protobuf.AbstractParser<OpticalLinkId>() {
+
+            @java.lang.Override
+            public OpticalLinkId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new OpticalLinkId(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<OpticalLinkId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<OpticalLinkId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalLinkId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface FiberIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.FiberId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Uuid fiber_uuid = 1;</code>
+         * @return Whether the fiberUuid field is set.
+         */
+        boolean hasFiberUuid();
+
+        /**
+         * <code>.context.Uuid fiber_uuid = 1;</code>
+         * @return The fiberUuid.
+         */
+        context.ContextOuterClass.Uuid getFiberUuid();
+
+        /**
+         * <code>.context.Uuid fiber_uuid = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getFiberUuidOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.FiberId}
+     */
+    public static final class FiberId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.FiberId)
+    FiberIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use FiberId.newBuilder() to construct.
+        private FiberId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private FiberId() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new FiberId();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private FiberId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (fiberUuid_ != null) {
+                                    subBuilder = fiberUuid_.toBuilder();
+                                }
+                                fiberUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(fiberUuid_);
+                                    fiberUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_FiberId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_FiberId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.FiberId.class, context.ContextOuterClass.FiberId.Builder.class);
+        }
+
+        public static final int FIBER_UUID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Uuid fiberUuid_;
+
+        /**
+         * <code>.context.Uuid fiber_uuid = 1;</code>
+         * @return Whether the fiberUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasFiberUuid() {
+            return fiberUuid_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid fiber_uuid = 1;</code>
+         * @return The fiberUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getFiberUuid() {
+            return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_;
+        }
+
+        /**
+         * <code>.context.Uuid fiber_uuid = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getFiberUuidOrBuilder() {
+            return getFiberUuid();
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (fiberUuid_ != null) {
+                output.writeMessage(1, getFiberUuid());
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (fiberUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getFiberUuid());
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.FiberId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.FiberId other = (context.ContextOuterClass.FiberId) obj;
+            if (hasFiberUuid() != other.hasFiberUuid())
+                return false;
+            if (hasFiberUuid()) {
+                if (!getFiberUuid().equals(other.getFiberUuid()))
+                    return false;
+            }
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasFiberUuid()) {
+                hash = (37 * hash) + FIBER_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getFiberUuid().hashCode();
+            }
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.FiberId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.FiberId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.FiberId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.FiberId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.FiberId)
+        context.ContextOuterClass.FiberIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_FiberId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_FiberId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.FiberId.class, context.ContextOuterClass.FiberId.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.FiberId.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuid_ = null;
+                } else {
+                    fiberUuid_ = null;
+                    fiberUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_FiberId_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.FiberId getDefaultInstanceForType() {
+                return context.ContextOuterClass.FiberId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.FiberId build() {
+                context.ContextOuterClass.FiberId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.FiberId buildPartial() {
+                context.ContextOuterClass.FiberId result = new context.ContextOuterClass.FiberId(this);
+                if (fiberUuidBuilder_ == null) {
+                    result.fiberUuid_ = fiberUuid_;
+                } else {
+                    result.fiberUuid_ = fiberUuidBuilder_.build();
+                }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.FiberId) {
+                    return mergeFrom((context.ContextOuterClass.FiberId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.FiberId other) {
+                if (other == context.ContextOuterClass.FiberId.getDefaultInstance())
+                    return this;
+                if (other.hasFiberUuid()) {
+                    mergeFiberUuid(other.getFiberUuid());
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.FiberId parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.FiberId) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private context.ContextOuterClass.Uuid fiberUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> fiberUuidBuilder_;
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             * @return Whether the fiberUuid field is set.
+             */
+            public boolean hasFiberUuid() {
+                return fiberUuidBuilder_ != null || fiberUuid_ != null;
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             * @return The fiberUuid.
+             */
+            public context.ContextOuterClass.Uuid getFiberUuid() {
+                if (fiberUuidBuilder_ == null) {
+                    return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_;
+                } else {
+                    return fiberUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            public Builder setFiberUuid(context.ContextOuterClass.Uuid value) {
+                if (fiberUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    fiberUuid_ = value;
+                    onChanged();
+                } else {
+                    fiberUuidBuilder_.setMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            public Builder setFiberUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuid_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    fiberUuidBuilder_.setMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            public Builder mergeFiberUuid(context.ContextOuterClass.Uuid value) {
+                if (fiberUuidBuilder_ == null) {
+                    if (fiberUuid_ != null) {
+                        fiberUuid_ = context.ContextOuterClass.Uuid.newBuilder(fiberUuid_).mergeFrom(value).buildPartial();
+                    } else {
+                        fiberUuid_ = value;
+                    }
+                    onChanged();
+                } else {
+                    fiberUuidBuilder_.mergeFrom(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            public Builder clearFiberUuid() {
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuid_ = null;
+                    onChanged();
+                } else {
+                    fiberUuid_ = null;
+                    fiberUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getFiberUuidBuilder() {
+                onChanged();
+                return getFiberUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getFiberUuidOrBuilder() {
+                if (fiberUuidBuilder_ != null) {
+                    return fiberUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getFiberUuidFieldBuilder() {
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getFiberUuid(), getParentForChildren(), isClean());
+                    fiberUuid_ = null;
+                }
+                return fiberUuidBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.FiberId)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.FiberId)
+        private static final context.ContextOuterClass.FiberId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.FiberId();
+        }
+
+        public static context.ContextOuterClass.FiberId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<FiberId> PARSER = new com.google.protobuf.AbstractParser<FiberId>() {
+
+            @java.lang.Override
+            public FiberId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new FiberId(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<FiberId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<FiberId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.FiberId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface FiberOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Fiber)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>string ID = 10;</code>
+         * @return The iD.
+         */
+        java.lang.String getID();
+
+        /**
+         * <code>string ID = 10;</code>
+         * @return The bytes for iD.
+         */
+        com.google.protobuf.ByteString getIDBytes();
+
+        /**
+         * <code>string src_port = 1;</code>
+         * @return The srcPort.
+         */
+        java.lang.String getSrcPort();
+
+        /**
+         * <code>string src_port = 1;</code>
+         * @return The bytes for srcPort.
+         */
+        com.google.protobuf.ByteString getSrcPortBytes();
+
+        /**
+         * <code>string dst_port = 2;</code>
+         * @return The dstPort.
+         */
+        java.lang.String getDstPort();
+
+        /**
+         * <code>string dst_port = 2;</code>
+         * @return The bytes for dstPort.
+         */
+        com.google.protobuf.ByteString getDstPortBytes();
+
+        /**
+         * <code>string local_peer_port = 3;</code>
+         * @return The localPeerPort.
+         */
+        java.lang.String getLocalPeerPort();
+
+        /**
+         * <code>string local_peer_port = 3;</code>
+         * @return The bytes for localPeerPort.
+         */
+        com.google.protobuf.ByteString getLocalPeerPortBytes();
+
+        /**
+         * <code>string remote_peer_port = 4;</code>
+         * @return The remotePeerPort.
+         */
+        java.lang.String getRemotePeerPort();
+
+        /**
+         * <code>string remote_peer_port = 4;</code>
+         * @return The bytes for remotePeerPort.
+         */
+        com.google.protobuf.ByteString getRemotePeerPortBytes();
+
+        /**
+         * <code>repeated int32 c_slots = 5;</code>
+         * @return A list containing the cSlots.
+         */
+        java.util.List<java.lang.Integer> getCSlotsList();
+
+        /**
+         * <code>repeated int32 c_slots = 5;</code>
+         * @return The count of cSlots.
+         */
+        int getCSlotsCount();
+
+        /**
+         * <code>repeated int32 c_slots = 5;</code>
+         * @param index The index of the element to return.
+         * @return The cSlots at the given index.
+         */
+        int getCSlots(int index);
+
+        /**
+         * <code>repeated int32 l_slots = 6;</code>
+         * @return A list containing the lSlots.
+         */
+        java.util.List<java.lang.Integer> getLSlotsList();
+
+        /**
+         * <code>repeated int32 l_slots = 6;</code>
+         * @return The count of lSlots.
+         */
+        int getLSlotsCount();
+
+        /**
+         * <code>repeated int32 l_slots = 6;</code>
+         * @param index The index of the element to return.
+         * @return The lSlots at the given index.
+         */
+        int getLSlots(int index);
+
+        /**
+         * <code>repeated int32 s_slots = 7;</code>
+         * @return A list containing the sSlots.
+         */
+        java.util.List<java.lang.Integer> getSSlotsList();
+
+        /**
+         * <code>repeated int32 s_slots = 7;</code>
+         * @return The count of sSlots.
+         */
+        int getSSlotsCount();
+
+        /**
+         * <code>repeated int32 s_slots = 7;</code>
+         * @param index The index of the element to return.
+         * @return The sSlots at the given index.
+         */
+        int getSSlots(int index);
+
+        /**
+         * <code>float length = 8;</code>
+         * @return The length.
+         */
+        float getLength();
+
+        /**
+         * <code>bool used = 9;</code>
+         * @return The used.
+         */
+        boolean getUsed();
+
+        /**
+         * <code>.context.FiberId fiber_uuid = 11;</code>
+         * @return Whether the fiberUuid field is set.
+         */
+        boolean hasFiberUuid();
+
+        /**
+         * <code>.context.FiberId fiber_uuid = 11;</code>
+         * @return The fiberUuid.
+         */
+        context.ContextOuterClass.FiberId getFiberUuid();
+
+        /**
+         * <code>.context.FiberId fiber_uuid = 11;</code>
+         */
+        context.ContextOuterClass.FiberIdOrBuilder getFiberUuidOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.Fiber}
+     */
+    public static final class Fiber extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Fiber)
+    FiberOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use Fiber.newBuilder() to construct.
+        private Fiber(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private Fiber() {
+            iD_ = "";
+            srcPort_ = "";
+            dstPort_ = "";
+            localPeerPort_ = "";
+            remotePeerPort_ = "";
+            cSlots_ = emptyIntList();
+            lSlots_ = emptyIntList();
+            sSlots_ = emptyIntList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Fiber();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Fiber(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                srcPort_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                dstPort_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                localPeerPort_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                remotePeerPort_ = s;
+                                break;
+                            }
+                        case 40:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    cSlots_ = newIntList();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                cSlots_.addInt(input.readInt32());
+                                break;
+                            }
+                        case 42:
+                            {
+                                int length = input.readRawVarint32();
+                                int limit = input.pushLimit(length);
+                                if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
+                                    cSlots_ = newIntList();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                while (input.getBytesUntilLimit() > 0) {
+                                    cSlots_.addInt(input.readInt32());
+                                }
+                                input.popLimit(limit);
+                                break;
+                            }
+                        case 48:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    lSlots_ = newIntList();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                lSlots_.addInt(input.readInt32());
+                                break;
+                            }
+                        case 50:
+                            {
+                                int length = input.readRawVarint32();
+                                int limit = input.pushLimit(length);
+                                if (!((mutable_bitField0_ & 0x00000002) != 0) && input.getBytesUntilLimit() > 0) {
+                                    lSlots_ = newIntList();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                while (input.getBytesUntilLimit() > 0) {
+                                    lSlots_.addInt(input.readInt32());
+                                }
+                                input.popLimit(limit);
+                                break;
+                            }
+                        case 56:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
+                                    sSlots_ = newIntList();
+                                    mutable_bitField0_ |= 0x00000004;
+                                }
+                                sSlots_.addInt(input.readInt32());
+                                break;
+                            }
+                        case 58:
+                            {
+                                int length = input.readRawVarint32();
+                                int limit = input.pushLimit(length);
+                                if (!((mutable_bitField0_ & 0x00000004) != 0) && input.getBytesUntilLimit() > 0) {
+                                    sSlots_ = newIntList();
+                                    mutable_bitField0_ |= 0x00000004;
+                                }
+                                while (input.getBytesUntilLimit() > 0) {
+                                    sSlots_.addInt(input.readInt32());
+                                }
+                                input.popLimit(limit);
+                                break;
+                            }
+                        case 69:
+                            {
+                                length_ = input.readFloat();
+                                break;
+                            }
+                        case 72:
+                            {
+                                used_ = input.readBool();
+                                break;
+                            }
+                        case 82:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                iD_ = s;
+                                break;
+                            }
+                        case 90:
+                            {
+                                context.ContextOuterClass.FiberId.Builder subBuilder = null;
+                                if (fiberUuid_ != null) {
+                                    subBuilder = fiberUuid_.toBuilder();
+                                }
+                                fiberUuid_ = input.readMessage(context.ContextOuterClass.FiberId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(fiberUuid_);
+                                    fiberUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    // C
+                    cSlots_.makeImmutable();
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    // C
+                    lSlots_.makeImmutable();
+                }
+                if (((mutable_bitField0_ & 0x00000004) != 0)) {
+                    // C
+                    sSlots_.makeImmutable();
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Fiber_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Fiber_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Fiber.class, context.ContextOuterClass.Fiber.Builder.class);
+        }
+
+        public static final int ID_FIELD_NUMBER = 10;
+
+        private volatile java.lang.Object iD_;
+
+        /**
+         * <code>string ID = 10;</code>
+         * @return The iD.
+         */
+        @java.lang.Override
+        public java.lang.String getID() {
+            java.lang.Object ref = iD_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                iD_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string ID = 10;</code>
+         * @return The bytes for iD.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getIDBytes() {
+            java.lang.Object ref = iD_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                iD_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int SRC_PORT_FIELD_NUMBER = 1;
+
+        private volatile java.lang.Object srcPort_;
+
+        /**
+         * <code>string src_port = 1;</code>
+         * @return The srcPort.
+         */
+        @java.lang.Override
+        public java.lang.String getSrcPort() {
+            java.lang.Object ref = srcPort_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                srcPort_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string src_port = 1;</code>
+         * @return The bytes for srcPort.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getSrcPortBytes() {
+            java.lang.Object ref = srcPort_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                srcPort_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int DST_PORT_FIELD_NUMBER = 2;
+
+        private volatile java.lang.Object dstPort_;
+
+        /**
+         * <code>string dst_port = 2;</code>
+         * @return The dstPort.
+         */
+        @java.lang.Override
+        public java.lang.String getDstPort() {
+            java.lang.Object ref = dstPort_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                dstPort_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string dst_port = 2;</code>
+         * @return The bytes for dstPort.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getDstPortBytes() {
+            java.lang.Object ref = dstPort_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                dstPort_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int LOCAL_PEER_PORT_FIELD_NUMBER = 3;
+
+        private volatile java.lang.Object localPeerPort_;
+
+        /**
+         * <code>string local_peer_port = 3;</code>
+         * @return The localPeerPort.
+         */
+        @java.lang.Override
+        public java.lang.String getLocalPeerPort() {
+            java.lang.Object ref = localPeerPort_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                localPeerPort_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string local_peer_port = 3;</code>
+         * @return The bytes for localPeerPort.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getLocalPeerPortBytes() {
+            java.lang.Object ref = localPeerPort_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                localPeerPort_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int REMOTE_PEER_PORT_FIELD_NUMBER = 4;
+
+        private volatile java.lang.Object remotePeerPort_;
+
+        /**
+         * <code>string remote_peer_port = 4;</code>
+         * @return The remotePeerPort.
+         */
+        @java.lang.Override
+        public java.lang.String getRemotePeerPort() {
+            java.lang.Object ref = remotePeerPort_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                remotePeerPort_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string remote_peer_port = 4;</code>
+         * @return The bytes for remotePeerPort.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getRemotePeerPortBytes() {
+            java.lang.Object ref = remotePeerPort_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                remotePeerPort_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int C_SLOTS_FIELD_NUMBER = 5;
+
+        private com.google.protobuf.Internal.IntList cSlots_;
+
+        /**
+         * <code>repeated int32 c_slots = 5;</code>
+         * @return A list containing the cSlots.
+         */
+        @java.lang.Override
+        public java.util.List<java.lang.Integer> getCSlotsList() {
+            return cSlots_;
+        }
+
+        /**
+         * <code>repeated int32 c_slots = 5;</code>
+         * @return The count of cSlots.
+         */
+        public int getCSlotsCount() {
+            return cSlots_.size();
+        }
+
+        /**
+         * <code>repeated int32 c_slots = 5;</code>
+         * @param index The index of the element to return.
+         * @return The cSlots at the given index.
+         */
+        public int getCSlots(int index) {
+            return cSlots_.getInt(index);
+        }
+
+        private int cSlotsMemoizedSerializedSize = -1;
+
+        public static final int L_SLOTS_FIELD_NUMBER = 6;
+
+        private com.google.protobuf.Internal.IntList lSlots_;
+
+        /**
+         * <code>repeated int32 l_slots = 6;</code>
+         * @return A list containing the lSlots.
+         */
+        @java.lang.Override
+        public java.util.List<java.lang.Integer> getLSlotsList() {
+            return lSlots_;
+        }
+
+        /**
+         * <code>repeated int32 l_slots = 6;</code>
+         * @return The count of lSlots.
+         */
+        public int getLSlotsCount() {
+            return lSlots_.size();
+        }
+
+        /**
+         * <code>repeated int32 l_slots = 6;</code>
+         * @param index The index of the element to return.
+         * @return The lSlots at the given index.
+         */
+        public int getLSlots(int index) {
+            return lSlots_.getInt(index);
+        }
+
+        private int lSlotsMemoizedSerializedSize = -1;
+
+        public static final int S_SLOTS_FIELD_NUMBER = 7;
+
+        private com.google.protobuf.Internal.IntList sSlots_;
+
+        /**
+         * <code>repeated int32 s_slots = 7;</code>
+         * @return A list containing the sSlots.
+         */
+        @java.lang.Override
+        public java.util.List<java.lang.Integer> getSSlotsList() {
+            return sSlots_;
+        }
+
+        /**
+         * <code>repeated int32 s_slots = 7;</code>
+         * @return The count of sSlots.
+         */
+        public int getSSlotsCount() {
+            return sSlots_.size();
+        }
+
+        /**
+         * <code>repeated int32 s_slots = 7;</code>
+         * @param index The index of the element to return.
+         * @return The sSlots at the given index.
+         */
+        public int getSSlots(int index) {
+            return sSlots_.getInt(index);
+        }
+
+        private int sSlotsMemoizedSerializedSize = -1;
+
+        public static final int LENGTH_FIELD_NUMBER = 8;
+
+        private float length_;
+
+        /**
+         * <code>float length = 8;</code>
+         * @return The length.
+         */
+        @java.lang.Override
+        public float getLength() {
+            return length_;
+        }
+
+        public static final int USED_FIELD_NUMBER = 9;
+
+        private boolean used_;
+
+        /**
+         * <code>bool used = 9;</code>
+         * @return The used.
+         */
+        @java.lang.Override
+        public boolean getUsed() {
+            return used_;
+        }
+
+        public static final int FIBER_UUID_FIELD_NUMBER = 11;
+
+        private context.ContextOuterClass.FiberId fiberUuid_;
+
+        /**
+         * <code>.context.FiberId fiber_uuid = 11;</code>
+         * @return Whether the fiberUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasFiberUuid() {
+            return fiberUuid_ != null;
+        }
+
+        /**
+         * <code>.context.FiberId fiber_uuid = 11;</code>
+         * @return The fiberUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.FiberId getFiberUuid() {
+            return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_;
+        }
+
+        /**
+         * <code>.context.FiberId fiber_uuid = 11;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.FiberIdOrBuilder getFiberUuidOrBuilder() {
+            return getFiberUuid();
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            getSerializedSize();
+            if (!getSrcPortBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcPort_);
+            }
+            if (!getDstPortBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstPort_);
+            }
+            if (!getLocalPeerPortBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, localPeerPort_);
+            }
+            if (!getRemotePeerPortBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, remotePeerPort_);
+            }
+            if (getCSlotsList().size() > 0) {
+                output.writeUInt32NoTag(42);
+                output.writeUInt32NoTag(cSlotsMemoizedSerializedSize);
+            }
+            for (int i = 0; i < cSlots_.size(); i++) {
+                output.writeInt32NoTag(cSlots_.getInt(i));
+            }
+            if (getLSlotsList().size() > 0) {
+                output.writeUInt32NoTag(50);
+                output.writeUInt32NoTag(lSlotsMemoizedSerializedSize);
+            }
+            for (int i = 0; i < lSlots_.size(); i++) {
+                output.writeInt32NoTag(lSlots_.getInt(i));
+            }
+            if (getSSlotsList().size() > 0) {
+                output.writeUInt32NoTag(58);
+                output.writeUInt32NoTag(sSlotsMemoizedSerializedSize);
+            }
+            for (int i = 0; i < sSlots_.size(); i++) {
+                output.writeInt32NoTag(sSlots_.getInt(i));
+            }
+            if (length_ != 0F) {
+                output.writeFloat(8, length_);
+            }
+            if (used_ != false) {
+                output.writeBool(9, used_);
+            }
+            if (!getIDBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 10, iD_);
+            }
+            if (fiberUuid_ != null) {
+                output.writeMessage(11, getFiberUuid());
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (!getSrcPortBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcPort_);
+            }
+            if (!getDstPortBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstPort_);
+            }
+            if (!getLocalPeerPortBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, localPeerPort_);
+            }
+            if (!getRemotePeerPortBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, remotePeerPort_);
+            }
+            {
+                int dataSize = 0;
+                for (int i = 0; i < cSlots_.size(); i++) {
+                    dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(cSlots_.getInt(i));
+                }
+                size += dataSize;
+                if (!getCSlotsList().isEmpty()) {
+                    size += 1;
+                    size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
+                }
+                cSlotsMemoizedSerializedSize = dataSize;
+            }
+            {
+                int dataSize = 0;
+                for (int i = 0; i < lSlots_.size(); i++) {
+                    dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(lSlots_.getInt(i));
+                }
+                size += dataSize;
+                if (!getLSlotsList().isEmpty()) {
+                    size += 1;
+                    size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
+                }
+                lSlotsMemoizedSerializedSize = dataSize;
+            }
+            {
+                int dataSize = 0;
+                for (int i = 0; i < sSlots_.size(); i++) {
+                    dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(sSlots_.getInt(i));
+                }
+                size += dataSize;
+                if (!getSSlotsList().isEmpty()) {
+                    size += 1;
+                    size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
+                }
+                sSlotsMemoizedSerializedSize = dataSize;
+            }
+            if (length_ != 0F) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(8, length_);
+            }
+            if (used_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(9, used_);
+            }
+            if (!getIDBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, iD_);
+            }
+            if (fiberUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, getFiberUuid());
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Fiber)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Fiber other = (context.ContextOuterClass.Fiber) obj;
+            if (!getID().equals(other.getID()))
+                return false;
+            if (!getSrcPort().equals(other.getSrcPort()))
+                return false;
+            if (!getDstPort().equals(other.getDstPort()))
+                return false;
+            if (!getLocalPeerPort().equals(other.getLocalPeerPort()))
+                return false;
+            if (!getRemotePeerPort().equals(other.getRemotePeerPort()))
+                return false;
+            if (!getCSlotsList().equals(other.getCSlotsList()))
+                return false;
+            if (!getLSlotsList().equals(other.getLSlotsList()))
+                return false;
+            if (!getSSlotsList().equals(other.getSSlotsList()))
+                return false;
+            if (java.lang.Float.floatToIntBits(getLength()) != java.lang.Float.floatToIntBits(other.getLength()))
+                return false;
+            if (getUsed() != other.getUsed())
+                return false;
+            if (hasFiberUuid() != other.hasFiberUuid())
+                return false;
+            if (hasFiberUuid()) {
+                if (!getFiberUuid().equals(other.getFiberUuid()))
+                    return false;
+            }
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            hash = (37 * hash) + ID_FIELD_NUMBER;
+            hash = (53 * hash) + getID().hashCode();
+            hash = (37 * hash) + SRC_PORT_FIELD_NUMBER;
+            hash = (53 * hash) + getSrcPort().hashCode();
+            hash = (37 * hash) + DST_PORT_FIELD_NUMBER;
+            hash = (53 * hash) + getDstPort().hashCode();
+            hash = (37 * hash) + LOCAL_PEER_PORT_FIELD_NUMBER;
+            hash = (53 * hash) + getLocalPeerPort().hashCode();
+            hash = (37 * hash) + REMOTE_PEER_PORT_FIELD_NUMBER;
+            hash = (53 * hash) + getRemotePeerPort().hashCode();
+            if (getCSlotsCount() > 0) {
+                hash = (37 * hash) + C_SLOTS_FIELD_NUMBER;
+                hash = (53 * hash) + getCSlotsList().hashCode();
+            }
+            if (getLSlotsCount() > 0) {
+                hash = (37 * hash) + L_SLOTS_FIELD_NUMBER;
+                hash = (53 * hash) + getLSlotsList().hashCode();
+            }
+            if (getSSlotsCount() > 0) {
+                hash = (37 * hash) + S_SLOTS_FIELD_NUMBER;
+                hash = (53 * hash) + getSSlotsList().hashCode();
+            }
+            hash = (37 * hash) + LENGTH_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getLength());
+            hash = (37 * hash) + USED_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getUsed());
+            if (hasFiberUuid()) {
+                hash = (37 * hash) + FIBER_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getFiberUuid().hashCode();
+            }
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Fiber parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Fiber parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.Fiber prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.Fiber}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Fiber)
+        context.ContextOuterClass.FiberOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Fiber_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Fiber_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Fiber.class, context.ContextOuterClass.Fiber.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.Fiber.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                iD_ = "";
+                srcPort_ = "";
+                dstPort_ = "";
+                localPeerPort_ = "";
+                remotePeerPort_ = "";
+                cSlots_ = emptyIntList();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                lSlots_ = emptyIntList();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                sSlots_ = emptyIntList();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                length_ = 0F;
+                used_ = false;
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuid_ = null;
+                } else {
+                    fiberUuid_ = null;
+                    fiberUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Fiber_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Fiber getDefaultInstanceForType() {
+                return context.ContextOuterClass.Fiber.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Fiber build() {
+                context.ContextOuterClass.Fiber result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Fiber buildPartial() {
+                context.ContextOuterClass.Fiber result = new context.ContextOuterClass.Fiber(this);
+                int from_bitField0_ = bitField0_;
+                result.iD_ = iD_;
+                result.srcPort_ = srcPort_;
+                result.dstPort_ = dstPort_;
+                result.localPeerPort_ = localPeerPort_;
+                result.remotePeerPort_ = remotePeerPort_;
+                if (((bitField0_ & 0x00000001) != 0)) {
+                    cSlots_.makeImmutable();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                }
+                result.cSlots_ = cSlots_;
+                if (((bitField0_ & 0x00000002) != 0)) {
+                    lSlots_.makeImmutable();
+                    bitField0_ = (bitField0_ & ~0x00000002);
+                }
+                result.lSlots_ = lSlots_;
+                if (((bitField0_ & 0x00000004) != 0)) {
+                    sSlots_.makeImmutable();
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                }
+                result.sSlots_ = sSlots_;
+                result.length_ = length_;
+                result.used_ = used_;
+                if (fiberUuidBuilder_ == null) {
+                    result.fiberUuid_ = fiberUuid_;
+                } else {
+                    result.fiberUuid_ = fiberUuidBuilder_.build();
+                }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Fiber) {
+                    return mergeFrom((context.ContextOuterClass.Fiber) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.Fiber other) {
+                if (other == context.ContextOuterClass.Fiber.getDefaultInstance())
+                    return this;
+                if (!other.getID().isEmpty()) {
+                    iD_ = other.iD_;
+                    onChanged();
+                }
+                if (!other.getSrcPort().isEmpty()) {
+                    srcPort_ = other.srcPort_;
+                    onChanged();
+                }
+                if (!other.getDstPort().isEmpty()) {
+                    dstPort_ = other.dstPort_;
+                    onChanged();
+                }
+                if (!other.getLocalPeerPort().isEmpty()) {
+                    localPeerPort_ = other.localPeerPort_;
+                    onChanged();
+                }
+                if (!other.getRemotePeerPort().isEmpty()) {
+                    remotePeerPort_ = other.remotePeerPort_;
+                    onChanged();
+                }
+                if (!other.cSlots_.isEmpty()) {
+                    if (cSlots_.isEmpty()) {
+                        cSlots_ = other.cSlots_;
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    } else {
+                        ensureCSlotsIsMutable();
+                        cSlots_.addAll(other.cSlots_);
+                    }
+                    onChanged();
+                }
+                if (!other.lSlots_.isEmpty()) {
+                    if (lSlots_.isEmpty()) {
+                        lSlots_ = other.lSlots_;
+                        bitField0_ = (bitField0_ & ~0x00000002);
+                    } else {
+                        ensureLSlotsIsMutable();
+                        lSlots_.addAll(other.lSlots_);
+                    }
+                    onChanged();
+                }
+                if (!other.sSlots_.isEmpty()) {
+                    if (sSlots_.isEmpty()) {
+                        sSlots_ = other.sSlots_;
+                        bitField0_ = (bitField0_ & ~0x00000004);
+                    } else {
+                        ensureSSlotsIsMutable();
+                        sSlots_.addAll(other.sSlots_);
+                    }
+                    onChanged();
+                }
+                if (other.getLength() != 0F) {
+                    setLength(other.getLength());
+                }
+                if (other.getUsed() != false) {
+                    setUsed(other.getUsed());
+                }
+                if (other.hasFiberUuid()) {
+                    mergeFiberUuid(other.getFiberUuid());
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.Fiber parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Fiber) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.lang.Object iD_ = "";
+
+            /**
+             * <code>string ID = 10;</code>
+             * @return The iD.
+             */
+            public java.lang.String getID() {
+                java.lang.Object ref = iD_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    iD_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string ID = 10;</code>
+             * @return The bytes for iD.
+             */
+            public com.google.protobuf.ByteString getIDBytes() {
+                java.lang.Object ref = iD_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    iD_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string ID = 10;</code>
+             * @param value The iD to set.
+             * @return This builder for chaining.
+             */
+            public Builder setID(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                iD_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string ID = 10;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearID() {
+                iD_ = getDefaultInstance().getID();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string ID = 10;</code>
+             * @param value The bytes for iD to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIDBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                iD_ = value;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object srcPort_ = "";
+
+            /**
+             * <code>string src_port = 1;</code>
+             * @return The srcPort.
+             */
+            public java.lang.String getSrcPort() {
+                java.lang.Object ref = srcPort_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    srcPort_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string src_port = 1;</code>
+             * @return The bytes for srcPort.
+             */
+            public com.google.protobuf.ByteString getSrcPortBytes() {
+                java.lang.Object ref = srcPort_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    srcPort_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string src_port = 1;</code>
+             * @param value The srcPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSrcPort(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                srcPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string src_port = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSrcPort() {
+                srcPort_ = getDefaultInstance().getSrcPort();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string src_port = 1;</code>
+             * @param value The bytes for srcPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSrcPortBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                srcPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object dstPort_ = "";
+
+            /**
+             * <code>string dst_port = 2;</code>
+             * @return The dstPort.
+             */
+            public java.lang.String getDstPort() {
+                java.lang.Object ref = dstPort_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    dstPort_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string dst_port = 2;</code>
+             * @return The bytes for dstPort.
+             */
+            public com.google.protobuf.ByteString getDstPortBytes() {
+                java.lang.Object ref = dstPort_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    dstPort_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string dst_port = 2;</code>
+             * @param value The dstPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDstPort(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                dstPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string dst_port = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDstPort() {
+                dstPort_ = getDefaultInstance().getDstPort();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string dst_port = 2;</code>
+             * @param value The bytes for dstPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDstPortBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                dstPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object localPeerPort_ = "";
+
+            /**
+             * <code>string local_peer_port = 3;</code>
+             * @return The localPeerPort.
+             */
+            public java.lang.String getLocalPeerPort() {
+                java.lang.Object ref = localPeerPort_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    localPeerPort_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string local_peer_port = 3;</code>
+             * @return The bytes for localPeerPort.
+             */
+            public com.google.protobuf.ByteString getLocalPeerPortBytes() {
+                java.lang.Object ref = localPeerPort_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    localPeerPort_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string local_peer_port = 3;</code>
+             * @param value The localPeerPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLocalPeerPort(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                localPeerPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string local_peer_port = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearLocalPeerPort() {
+                localPeerPort_ = getDefaultInstance().getLocalPeerPort();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string local_peer_port = 3;</code>
+             * @param value The bytes for localPeerPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLocalPeerPortBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                localPeerPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object remotePeerPort_ = "";
+
+            /**
+             * <code>string remote_peer_port = 4;</code>
+             * @return The remotePeerPort.
+             */
+            public java.lang.String getRemotePeerPort() {
+                java.lang.Object ref = remotePeerPort_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    remotePeerPort_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string remote_peer_port = 4;</code>
+             * @return The bytes for remotePeerPort.
+             */
+            public com.google.protobuf.ByteString getRemotePeerPortBytes() {
+                java.lang.Object ref = remotePeerPort_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    remotePeerPort_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string remote_peer_port = 4;</code>
+             * @param value The remotePeerPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setRemotePeerPort(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                remotePeerPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string remote_peer_port = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearRemotePeerPort() {
+                remotePeerPort_ = getDefaultInstance().getRemotePeerPort();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string remote_peer_port = 4;</code>
+             * @param value The bytes for remotePeerPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setRemotePeerPortBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                remotePeerPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            private com.google.protobuf.Internal.IntList cSlots_ = emptyIntList();
+
+            private void ensureCSlotsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    cSlots_ = mutableCopy(cSlots_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @return A list containing the cSlots.
+             */
+            public java.util.List<java.lang.Integer> getCSlotsList() {
+                return ((bitField0_ & 0x00000001) != 0) ? java.util.Collections.unmodifiableList(cSlots_) : cSlots_;
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @return The count of cSlots.
+             */
+            public int getCSlotsCount() {
+                return cSlots_.size();
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @param index The index of the element to return.
+             * @return The cSlots at the given index.
+             */
+            public int getCSlots(int index) {
+                return cSlots_.getInt(index);
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @param index The index to set the value at.
+             * @param value The cSlots to set.
+             * @return This builder for chaining.
+             */
+            public Builder setCSlots(int index, int value) {
+                ensureCSlotsIsMutable();
+                cSlots_.setInt(index, value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @param value The cSlots to add.
+             * @return This builder for chaining.
+             */
+            public Builder addCSlots(int value) {
+                ensureCSlotsIsMutable();
+                cSlots_.addInt(value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @param values The cSlots to add.
+             * @return This builder for chaining.
+             */
+            public Builder addAllCSlots(java.lang.Iterable<? extends java.lang.Integer> values) {
+                ensureCSlotsIsMutable();
+                com.google.protobuf.AbstractMessageLite.Builder.addAll(values, cSlots_);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearCSlots() {
+                cSlots_ = emptyIntList();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                onChanged();
+                return this;
+            }
+
+            private com.google.protobuf.Internal.IntList lSlots_ = emptyIntList();
+
+            private void ensureLSlotsIsMutable() {
+                if (!((bitField0_ & 0x00000002) != 0)) {
+                    lSlots_ = mutableCopy(lSlots_);
+                    bitField0_ |= 0x00000002;
+                }
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @return A list containing the lSlots.
+             */
+            public java.util.List<java.lang.Integer> getLSlotsList() {
+                return ((bitField0_ & 0x00000002) != 0) ? java.util.Collections.unmodifiableList(lSlots_) : lSlots_;
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @return The count of lSlots.
+             */
+            public int getLSlotsCount() {
+                return lSlots_.size();
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @param index The index of the element to return.
+             * @return The lSlots at the given index.
+             */
+            public int getLSlots(int index) {
+                return lSlots_.getInt(index);
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @param index The index to set the value at.
+             * @param value The lSlots to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLSlots(int index, int value) {
+                ensureLSlotsIsMutable();
+                lSlots_.setInt(index, value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @param value The lSlots to add.
+             * @return This builder for chaining.
+             */
+            public Builder addLSlots(int value) {
+                ensureLSlotsIsMutable();
+                lSlots_.addInt(value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @param values The lSlots to add.
+             * @return This builder for chaining.
+             */
+            public Builder addAllLSlots(java.lang.Iterable<? extends java.lang.Integer> values) {
+                ensureLSlotsIsMutable();
+                com.google.protobuf.AbstractMessageLite.Builder.addAll(values, lSlots_);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearLSlots() {
+                lSlots_ = emptyIntList();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            private com.google.protobuf.Internal.IntList sSlots_ = emptyIntList();
+
+            private void ensureSSlotsIsMutable() {
+                if (!((bitField0_ & 0x00000004) != 0)) {
+                    sSlots_ = mutableCopy(sSlots_);
+                    bitField0_ |= 0x00000004;
+                }
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @return A list containing the sSlots.
+             */
+            public java.util.List<java.lang.Integer> getSSlotsList() {
+                return ((bitField0_ & 0x00000004) != 0) ? java.util.Collections.unmodifiableList(sSlots_) : sSlots_;
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @return The count of sSlots.
+             */
+            public int getSSlotsCount() {
+                return sSlots_.size();
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @param index The index of the element to return.
+             * @return The sSlots at the given index.
+             */
+            public int getSSlots(int index) {
+                return sSlots_.getInt(index);
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @param index The index to set the value at.
+             * @param value The sSlots to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSSlots(int index, int value) {
+                ensureSSlotsIsMutable();
+                sSlots_.setInt(index, value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @param value The sSlots to add.
+             * @return This builder for chaining.
+             */
+            public Builder addSSlots(int value) {
+                ensureSSlotsIsMutable();
+                sSlots_.addInt(value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @param values The sSlots to add.
+             * @return This builder for chaining.
+             */
+            public Builder addAllSSlots(java.lang.Iterable<? extends java.lang.Integer> values) {
+                ensureSSlotsIsMutable();
+                com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sSlots_);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSSlots() {
+                sSlots_ = emptyIntList();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                onChanged();
+                return this;
+            }
+
+            private float length_;
+
+            /**
+             * <code>float length = 8;</code>
+             * @return The length.
+             */
+            @java.lang.Override
+            public float getLength() {
+                return length_;
+            }
+
+            /**
+             * <code>float length = 8;</code>
+             * @param value The length to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLength(float value) {
+                length_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>float length = 8;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearLength() {
+                length_ = 0F;
+                onChanged();
+                return this;
+            }
+
+            private boolean used_;
+
+            /**
+             * <code>bool used = 9;</code>
+             * @return The used.
+             */
+            @java.lang.Override
+            public boolean getUsed() {
+                return used_;
+            }
+
+            /**
+             * <code>bool used = 9;</code>
+             * @param value The used to set.
+             * @return This builder for chaining.
+             */
+            public Builder setUsed(boolean value) {
+                used_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool used = 9;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearUsed() {
+                used_ = false;
+                onChanged();
+                return this;
+            }
+
+            private context.ContextOuterClass.FiberId fiberUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.FiberId, context.ContextOuterClass.FiberId.Builder, context.ContextOuterClass.FiberIdOrBuilder> fiberUuidBuilder_;
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             * @return Whether the fiberUuid field is set.
+             */
+            public boolean hasFiberUuid() {
+                return fiberUuidBuilder_ != null || fiberUuid_ != null;
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             * @return The fiberUuid.
+             */
+            public context.ContextOuterClass.FiberId getFiberUuid() {
+                if (fiberUuidBuilder_ == null) {
+                    return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_;
+                } else {
+                    return fiberUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            public Builder setFiberUuid(context.ContextOuterClass.FiberId value) {
+                if (fiberUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    fiberUuid_ = value;
+                    onChanged();
+                } else {
+                    fiberUuidBuilder_.setMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            public Builder setFiberUuid(context.ContextOuterClass.FiberId.Builder builderForValue) {
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuid_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    fiberUuidBuilder_.setMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            public Builder mergeFiberUuid(context.ContextOuterClass.FiberId value) {
+                if (fiberUuidBuilder_ == null) {
+                    if (fiberUuid_ != null) {
+                        fiberUuid_ = context.ContextOuterClass.FiberId.newBuilder(fiberUuid_).mergeFrom(value).buildPartial();
+                    } else {
+                        fiberUuid_ = value;
+                    }
+                    onChanged();
+                } else {
+                    fiberUuidBuilder_.mergeFrom(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            public Builder clearFiberUuid() {
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuid_ = null;
+                    onChanged();
+                } else {
+                    fiberUuid_ = null;
+                    fiberUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            public context.ContextOuterClass.FiberId.Builder getFiberUuidBuilder() {
+                onChanged();
+                return getFiberUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            public context.ContextOuterClass.FiberIdOrBuilder getFiberUuidOrBuilder() {
+                if (fiberUuidBuilder_ != null) {
+                    return fiberUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.FiberId, context.ContextOuterClass.FiberId.Builder, context.ContextOuterClass.FiberIdOrBuilder> getFiberUuidFieldBuilder() {
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.FiberId, context.ContextOuterClass.FiberId.Builder, context.ContextOuterClass.FiberIdOrBuilder>(getFiberUuid(), getParentForChildren(), isClean());
+                    fiberUuid_ = null;
+                }
+                return fiberUuidBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Fiber)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.Fiber)
+        private static final context.ContextOuterClass.Fiber DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Fiber();
+        }
+
+        public static context.ContextOuterClass.Fiber getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<Fiber> PARSER = new com.google.protobuf.AbstractParser<Fiber>() {
+
+            @java.lang.Override
+            public Fiber parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new Fiber(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<Fiber> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Fiber> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Fiber getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface OpticalLinkDetailsOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkDetails)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>float length = 1;</code>
+         * @return The length.
+         */
+        float getLength();
+
+        /**
+         * <code>string source = 2;</code>
+         * @return The source.
+         */
+        java.lang.String getSource();
+
+        /**
+         * <code>string source = 2;</code>
+         * @return The bytes for source.
+         */
+        com.google.protobuf.ByteString getSourceBytes();
+
+        /**
+         * <code>string target = 3;</code>
+         * @return The target.
+         */
+        java.lang.String getTarget();
+
+        /**
+         * <code>string target = 3;</code>
+         * @return The bytes for target.
+         */
+        com.google.protobuf.ByteString getTargetBytes();
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        java.util.List<context.ContextOuterClass.Fiber> getFibersList();
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        context.ContextOuterClass.Fiber getFibers(int index);
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        int getFibersCount();
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.FiberOrBuilder> getFibersOrBuilderList();
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        context.ContextOuterClass.FiberOrBuilder getFibersOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.OpticalLinkDetails}
+     */
+    public static final class OpticalLinkDetails extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkDetails)
+    OpticalLinkDetailsOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use OpticalLinkDetails.newBuilder() to construct.
+        private OpticalLinkDetails(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private OpticalLinkDetails() {
+            source_ = "";
+            target_ = "";
+            fibers_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new OpticalLinkDetails();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private OpticalLinkDetails(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 13:
+                            {
+                                length_ = input.readFloat();
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                source_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                target_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    fibers_ = new java.util.ArrayList<context.ContextOuterClass.Fiber>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                fibers_.add(input.readMessage(context.ContextOuterClass.Fiber.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    fibers_ = java.util.Collections.unmodifiableList(fibers_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class);
+        }
+
+        public static final int LENGTH_FIELD_NUMBER = 1;
+
+        private float length_;
+
+        /**
+         * <code>float length = 1;</code>
+         * @return The length.
+         */
+        @java.lang.Override
+        public float getLength() {
+            return length_;
+        }
+
+        public static final int SOURCE_FIELD_NUMBER = 2;
+
+        private volatile java.lang.Object source_;
+
+        /**
+         * <code>string source = 2;</code>
+         * @return The source.
+         */
+        @java.lang.Override
+        public java.lang.String getSource() {
+            java.lang.Object ref = source_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                source_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string source = 2;</code>
+         * @return The bytes for source.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getSourceBytes() {
+            java.lang.Object ref = source_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                source_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int TARGET_FIELD_NUMBER = 3;
+
+        private volatile java.lang.Object target_;
+
+        /**
+         * <code>string target = 3;</code>
+         * @return The target.
+         */
+        @java.lang.Override
+        public java.lang.String getTarget() {
+            java.lang.Object ref = target_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                target_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string target = 3;</code>
+         * @return The bytes for target.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getTargetBytes() {
+            java.lang.Object ref = target_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                target_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int FIBERS_FIELD_NUMBER = 4;
+
+        private java.util.List<context.ContextOuterClass.Fiber> fibers_;
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Fiber> getFibersList() {
+            return fibers_;
+        }
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.FiberOrBuilder> getFibersOrBuilderList() {
+            return fibers_;
+        }
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        @java.lang.Override
+        public int getFibersCount() {
+            return fibers_.size();
+        }
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Fiber getFibers(int index) {
+            return fibers_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.FiberOrBuilder getFibersOrBuilder(int index) {
+            return fibers_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (length_ != 0F) {
+                output.writeFloat(1, length_);
+            }
+            if (!getSourceBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, source_);
+            }
+            if (!getTargetBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, target_);
+            }
+            for (int i = 0; i < fibers_.size(); i++) {
+                output.writeMessage(4, fibers_.get(i));
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (length_ != 0F) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, length_);
+            }
+            if (!getSourceBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, source_);
+            }
+            if (!getTargetBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, target_);
+            }
+            for (int i = 0; i < fibers_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, fibers_.get(i));
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.OpticalLinkDetails)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.OpticalLinkDetails other = (context.ContextOuterClass.OpticalLinkDetails) obj;
+            if (java.lang.Float.floatToIntBits(getLength()) != java.lang.Float.floatToIntBits(other.getLength()))
+                return false;
+            if (!getSource().equals(other.getSource()))
+                return false;
+            if (!getTarget().equals(other.getTarget()))
+                return false;
+            if (!getFibersList().equals(other.getFibersList()))
+                return false;
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            hash = (37 * hash) + LENGTH_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getLength());
+            hash = (37 * hash) + SOURCE_FIELD_NUMBER;
+            hash = (53 * hash) + getSource().hashCode();
+            hash = (37 * hash) + TARGET_FIELD_NUMBER;
+            hash = (53 * hash) + getTarget().hashCode();
+            if (getFibersCount() > 0) {
+                hash = (37 * hash) + FIBERS_FIELD_NUMBER;
+                hash = (53 * hash) + getFibersList().hashCode();
+            }
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.OpticalLinkDetails prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.OpticalLinkDetails}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkDetails)
+        context.ContextOuterClass.OpticalLinkDetailsOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.OpticalLinkDetails.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getFibersFieldBuilder();
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                length_ = 0F;
+                source_ = "";
+                target_ = "";
+                if (fibersBuilder_ == null) {
+                    fibers_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                    fibersBuilder_.clear();
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() {
+                return context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalLinkDetails build() {
+                context.ContextOuterClass.OpticalLinkDetails result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalLinkDetails buildPartial() {
+                context.ContextOuterClass.OpticalLinkDetails result = new context.ContextOuterClass.OpticalLinkDetails(this);
+                int from_bitField0_ = bitField0_;
+                result.length_ = length_;
+                result.source_ = source_;
+                result.target_ = target_;
+                if (fibersBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        fibers_ = java.util.Collections.unmodifiableList(fibers_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.fibers_ = fibers_;
+                } else {
+                    result.fibers_ = fibersBuilder_.build();
+                }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.OpticalLinkDetails) {
+                    return mergeFrom((context.ContextOuterClass.OpticalLinkDetails) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.OpticalLinkDetails other) {
+                if (other == context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance())
+                    return this;
+                if (other.getLength() != 0F) {
+                    setLength(other.getLength());
+                }
+                if (!other.getSource().isEmpty()) {
+                    source_ = other.source_;
+                    onChanged();
+                }
+                if (!other.getTarget().isEmpty()) {
+                    target_ = other.target_;
+                    onChanged();
+                }
+                if (fibersBuilder_ == null) {
+                    if (!other.fibers_.isEmpty()) {
+                        if (fibers_.isEmpty()) {
+                            fibers_ = other.fibers_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureFibersIsMutable();
+                            fibers_.addAll(other.fibers_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.fibers_.isEmpty()) {
+                        if (fibersBuilder_.isEmpty()) {
+                            fibersBuilder_.dispose();
+                            fibersBuilder_ = null;
+                            fibers_ = other.fibers_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            fibersBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getFibersFieldBuilder() : null;
+                        } else {
+                            fibersBuilder_.addAllMessages(other.fibers_);
+                        }
+                    }
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.OpticalLinkDetails parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.OpticalLinkDetails) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private int bitField0_;
+
+            private float length_;
+
+            /**
+             * <code>float length = 1;</code>
+             * @return The length.
+             */
+            @java.lang.Override
+            public float getLength() {
+                return length_;
+            }
+
+            /**
+             * <code>float length = 1;</code>
+             * @param value The length to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLength(float value) {
+                length_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>float length = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearLength() {
+                length_ = 0F;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object source_ = "";
+
+            /**
+             * <code>string source = 2;</code>
+             * @return The source.
+             */
+            public java.lang.String getSource() {
+                java.lang.Object ref = source_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    source_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string source = 2;</code>
+             * @return The bytes for source.
+             */
+            public com.google.protobuf.ByteString getSourceBytes() {
+                java.lang.Object ref = source_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    source_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string source = 2;</code>
+             * @param value The source to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSource(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                source_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string source = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSource() {
+                source_ = getDefaultInstance().getSource();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string source = 2;</code>
+             * @param value The bytes for source to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSourceBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                source_ = value;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object target_ = "";
+
+            /**
+             * <code>string target = 3;</code>
+             * @return The target.
+             */
+            public java.lang.String getTarget() {
+                java.lang.Object ref = target_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    target_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string target = 3;</code>
+             * @return The bytes for target.
+             */
+            public com.google.protobuf.ByteString getTargetBytes() {
+                java.lang.Object ref = target_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    target_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string target = 3;</code>
+             * @param value The target to set.
+             * @return This builder for chaining.
+             */
+            public Builder setTarget(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                target_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string target = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearTarget() {
+                target_ = getDefaultInstance().getTarget();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string target = 3;</code>
+             * @param value The bytes for target to set.
+             * @return This builder for chaining.
+             */
+            public Builder setTargetBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                target_ = value;
+                onChanged();
+                return this;
+            }
+
+            private java.util.List<context.ContextOuterClass.Fiber> fibers_ = java.util.Collections.emptyList();
+
+            private void ensureFibersIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    fibers_ = new java.util.ArrayList<context.ContextOuterClass.Fiber>(fibers_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Fiber, context.ContextOuterClass.Fiber.Builder, context.ContextOuterClass.FiberOrBuilder> fibersBuilder_;
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Fiber> getFibersList() {
+                if (fibersBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(fibers_);
+                } else {
+                    return fibersBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public int getFibersCount() {
+                if (fibersBuilder_ == null) {
+                    return fibers_.size();
+                } else {
+                    return fibersBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public context.ContextOuterClass.Fiber getFibers(int index) {
+                if (fibersBuilder_ == null) {
+                    return fibers_.get(index);
+                } else {
+                    return fibersBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder setFibers(int index, context.ContextOuterClass.Fiber value) {
+                if (fibersBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureFibersIsMutable();
+                    fibers_.set(index, value);
+                    onChanged();
+                } else {
+                    fibersBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder setFibers(int index, context.ContextOuterClass.Fiber.Builder builderForValue) {
+                if (fibersBuilder_ == null) {
+                    ensureFibersIsMutable();
+                    fibers_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    fibersBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder addFibers(context.ContextOuterClass.Fiber value) {
+                if (fibersBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureFibersIsMutable();
+                    fibers_.add(value);
+                    onChanged();
+                } else {
+                    fibersBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder addFibers(int index, context.ContextOuterClass.Fiber value) {
+                if (fibersBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureFibersIsMutable();
+                    fibers_.add(index, value);
+                    onChanged();
+                } else {
+                    fibersBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder addFibers(context.ContextOuterClass.Fiber.Builder builderForValue) {
+                if (fibersBuilder_ == null) {
+                    ensureFibersIsMutable();
+                    fibers_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    fibersBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder addFibers(int index, context.ContextOuterClass.Fiber.Builder builderForValue) {
+                if (fibersBuilder_ == null) {
+                    ensureFibersIsMutable();
+                    fibers_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    fibersBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder addAllFibers(java.lang.Iterable<? extends context.ContextOuterClass.Fiber> values) {
+                if (fibersBuilder_ == null) {
+                    ensureFibersIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, fibers_);
+                    onChanged();
+                } else {
+                    fibersBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder clearFibers() {
+                if (fibersBuilder_ == null) {
+                    fibers_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    fibersBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder removeFibers(int index) {
+                if (fibersBuilder_ == null) {
+                    ensureFibersIsMutable();
+                    fibers_.remove(index);
+                    onChanged();
+                } else {
+                    fibersBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public context.ContextOuterClass.Fiber.Builder getFibersBuilder(int index) {
+                return getFibersFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public context.ContextOuterClass.FiberOrBuilder getFibersOrBuilder(int index) {
+                if (fibersBuilder_ == null) {
+                    return fibers_.get(index);
+                } else {
+                    return fibersBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.FiberOrBuilder> getFibersOrBuilderList() {
+                if (fibersBuilder_ != null) {
+                    return fibersBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(fibers_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public context.ContextOuterClass.Fiber.Builder addFibersBuilder() {
+                return getFibersFieldBuilder().addBuilder(context.ContextOuterClass.Fiber.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public context.ContextOuterClass.Fiber.Builder addFibersBuilder(int index) {
+                return getFibersFieldBuilder().addBuilder(index, context.ContextOuterClass.Fiber.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Fiber.Builder> getFibersBuilderList() {
+                return getFibersFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Fiber, context.ContextOuterClass.Fiber.Builder, context.ContextOuterClass.FiberOrBuilder> getFibersFieldBuilder() {
+                if (fibersBuilder_ == null) {
+                    fibersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Fiber, context.ContextOuterClass.Fiber.Builder, context.ContextOuterClass.FiberOrBuilder>(fibers_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    fibers_ = null;
+                }
+                return fibersBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.OpticalLinkDetails)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.OpticalLinkDetails)
+        private static final context.ContextOuterClass.OpticalLinkDetails DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkDetails();
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<OpticalLinkDetails> PARSER = new com.google.protobuf.AbstractParser<OpticalLinkDetails>() {
+
+            @java.lang.Override
+            public OpticalLinkDetails parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new OpticalLinkDetails(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<OpticalLinkDetails> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<OpticalLinkDetails> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface OpticalLinkOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLink)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>string name = 1;</code>
+         * @return The name.
+         */
+        java.lang.String getName();
+
+        /**
+         * <code>string name = 1;</code>
+         * @return The bytes for name.
+         */
+        com.google.protobuf.ByteString getNameBytes();
+
+        /**
+         * <code>.context.OpticalLinkDetails details = 2;</code>
+         * @return Whether the details field is set.
+         */
+        boolean hasDetails();
+
+        /**
+         * <code>.context.OpticalLinkDetails details = 2;</code>
+         * @return The details.
+         */
+        context.ContextOuterClass.OpticalLinkDetails getDetails();
+
+        /**
+         * <code>.context.OpticalLinkDetails details = 2;</code>
+         */
+        context.ContextOuterClass.OpticalLinkDetailsOrBuilder getDetailsOrBuilder();
+
+        /**
+         * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+         * @return Whether the opticalLinkUuid field is set.
+         */
+        boolean hasOpticalLinkUuid();
+
+        /**
+         * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+         * @return The opticalLinkUuid.
+         */
+        context.ContextOuterClass.OpticalLinkId getOpticalLinkUuid();
+
+        /**
+         * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+         */
+        context.ContextOuterClass.OpticalLinkIdOrBuilder getOpticalLinkUuidOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.OpticalLink}
+     */
+    public static final class OpticalLink extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLink)
+    OpticalLinkOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use OpticalLink.newBuilder() to construct.
+        private OpticalLink(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private OpticalLink() {
+            name_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new OpticalLink();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private OpticalLink(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.OpticalLinkDetails.Builder subBuilder = null;
+                                if (details_ != null) {
+                                    subBuilder = details_.toBuilder();
+                                }
+                                details_ = input.readMessage(context.ContextOuterClass.OpticalLinkDetails.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(details_);
+                                    details_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 26:
+                            {
+                                context.ContextOuterClass.OpticalLinkId.Builder subBuilder = null;
+                                if (opticalLinkUuid_ != null) {
+                                    subBuilder = opticalLinkUuid_.toBuilder();
+                                }
+                                opticalLinkUuid_ = input.readMessage(context.ContextOuterClass.OpticalLinkId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(opticalLinkUuid_);
+                                    opticalLinkUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
-            return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+            return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor;
         }
 
         @java.lang.Override
         protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
-            return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
+            return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class);
         }
 
-        public static final int CONTEXT_ID_FIELD_NUMBER = 1;
+        public static final int NAME_FIELD_NUMBER = 1;
 
-        private context.ContextOuterClass.ContextId contextId_;
+        private volatile java.lang.Object name_;
 
         /**
-         * <code>.context.ContextId context_id = 1;</code>
-         * @return Whether the contextId field is set.
+         * <code>string name = 1;</code>
+         * @return The name.
          */
         @java.lang.Override
-        public boolean hasContextId() {
-            return contextId_ != null;
+        public java.lang.String getName() {
+            java.lang.Object ref = name_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                name_ = s;
+                return s;
+            }
         }
 
         /**
-         * <code>.context.ContextId context_id = 1;</code>
-         * @return The contextId.
+         * <code>string name = 1;</code>
+         * @return The bytes for name.
          */
         @java.lang.Override
-        public context.ContextOuterClass.ContextId getContextId() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        public com.google.protobuf.ByteString getNameBytes() {
+            java.lang.Object ref = name_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                name_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
         }
 
+        public static final int DETAILS_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.OpticalLinkDetails details_;
+
         /**
-         * <code>.context.ContextId context_id = 1;</code>
+         * <code>.context.OpticalLinkDetails details = 2;</code>
+         * @return Whether the details field is set.
          */
         @java.lang.Override
-        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        public boolean hasDetails() {
+            return details_ != null;
         }
 
-        public static final int AUTHENTICATED_FIELD_NUMBER = 2;
+        /**
+         * <code>.context.OpticalLinkDetails details = 2;</code>
+         * @return The details.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalLinkDetails getDetails() {
+            return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_;
+        }
+
+        /**
+         * <code>.context.OpticalLinkDetails details = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getDetailsOrBuilder() {
+            return getDetails();
+        }
 
-        private boolean authenticated_ = false;
+        public static final int OPTICAL_LINK_UUID_FIELD_NUMBER = 3;
+
+        private context.ContextOuterClass.OpticalLinkId opticalLinkUuid_;
 
         /**
-         * <code>bool authenticated = 2;</code>
-         * @return The authenticated.
+         * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+         * @return Whether the opticalLinkUuid field is set.
          */
         @java.lang.Override
-        public boolean getAuthenticated() {
-            return authenticated_;
+        public boolean hasOpticalLinkUuid() {
+            return opticalLinkUuid_ != null;
+        }
+
+        /**
+         * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+         * @return The opticalLinkUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalLinkId getOpticalLinkUuid() {
+            return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_;
+        }
+
+        /**
+         * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalLinkIdOrBuilder getOpticalLinkUuidOrBuilder() {
+            return getOpticalLinkUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -68795,13 +78731,16 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (contextId_ != null) {
-                output.writeMessage(1, getContextId());
+            if (!getNameBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
             }
-            if (authenticated_ != false) {
-                output.writeBool(2, authenticated_);
+            if (details_ != null) {
+                output.writeMessage(2, getDetails());
+            }
+            if (opticalLinkUuid_ != null) {
+                output.writeMessage(3, getOpticalLinkUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -68810,13 +78749,16 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (contextId_ != null) {
-                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
+            if (!getNameBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
             }
-            if (authenticated_ != false) {
-                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, authenticated_);
+            if (details_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDetails());
             }
-            size += getUnknownFields().getSerializedSize();
+            if (opticalLinkUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getOpticalLinkUuid());
+            }
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -68826,19 +78768,25 @@ public final class ContextOuterClass {
             if (obj == this) {
                 return true;
             }
-            if (!(obj instanceof context.ContextOuterClass.AuthenticationResult)) {
+            if (!(obj instanceof context.ContextOuterClass.OpticalLink)) {
                 return super.equals(obj);
             }
-            context.ContextOuterClass.AuthenticationResult other = (context.ContextOuterClass.AuthenticationResult) obj;
-            if (hasContextId() != other.hasContextId())
+            context.ContextOuterClass.OpticalLink other = (context.ContextOuterClass.OpticalLink) obj;
+            if (!getName().equals(other.getName()))
                 return false;
-            if (hasContextId()) {
-                if (!getContextId().equals(other.getContextId()))
+            if (hasDetails() != other.hasDetails())
+                return false;
+            if (hasDetails()) {
+                if (!getDetails().equals(other.getDetails()))
                     return false;
             }
-            if (getAuthenticated() != other.getAuthenticated())
+            if (hasOpticalLinkUuid() != other.hasOpticalLinkUuid())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (hasOpticalLinkUuid()) {
+                if (!getOpticalLinkUuid().equals(other.getOpticalLinkUuid()))
+                    return false;
+            }
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -68850,62 +78798,66 @@ public final class ContextOuterClass {
             }
             int hash = 41;
             hash = (19 * hash) + getDescriptor().hashCode();
-            if (hasContextId()) {
-                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
-                hash = (53 * hash) + getContextId().hashCode();
+            hash = (37 * hash) + NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getName().hashCode();
+            if (hasDetails()) {
+                hash = (37 * hash) + DETAILS_FIELD_NUMBER;
+                hash = (53 * hash) + getDetails().hashCode();
             }
-            hash = (37 * hash) + AUTHENTICATED_FIELD_NUMBER;
-            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAuthenticated());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            if (hasOpticalLinkUuid()) {
+                hash = (37 * hash) + OPTICAL_LINK_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getOpticalLinkUuid().hashCode();
+            }
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input) throws java.io.IOException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+        public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
         }
 
@@ -68918,7 +78870,7 @@ public final class ContextOuterClass {
             return DEFAULT_INSTANCE.toBuilder();
         }
 
-        public static Builder newBuilder(context.ContextOuterClass.AuthenticationResult prototype) {
+        public static Builder newBuilder(context.ContextOuterClass.OpticalLink prototype) {
             return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
         }
 
@@ -68934,54 +78886,67 @@ public final class ContextOuterClass {
         }
 
         /**
-         * Protobuf type {@code context.AuthenticationResult}
+         * Protobuf type {@code context.OpticalLink}
          */
-        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.AuthenticationResult)
-        context.ContextOuterClass.AuthenticationResultOrBuilder {
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalLink)
+        context.ContextOuterClass.OpticalLinkOrBuilder {
 
             public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
-                return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+                return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor;
             }
 
             @java.lang.Override
             protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
-                return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
+                return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class);
             }
 
-            // Construct using context.ContextOuterClass.AuthenticationResult.newBuilder()
+            // Construct using context.ContextOuterClass.OpticalLink.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
-                    contextIdBuilder_ = null;
+                name_ = "";
+                if (detailsBuilder_ == null) {
+                    details_ = null;
+                } else {
+                    details_ = null;
+                    detailsBuilder_ = null;
+                }
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuid_ = null;
+                } else {
+                    opticalLinkUuid_ = null;
+                    opticalLinkUuidBuilder_ = null;
                 }
-                authenticated_ = false;
                 return this;
             }
 
             @java.lang.Override
             public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
-                return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+                return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor;
             }
 
             @java.lang.Override
-            public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
-                return context.ContextOuterClass.AuthenticationResult.getDefaultInstance();
+            public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() {
+                return context.ContextOuterClass.OpticalLink.getDefaultInstance();
             }
 
             @java.lang.Override
-            public context.ContextOuterClass.AuthenticationResult build() {
-                context.ContextOuterClass.AuthenticationResult result = buildPartial();
+            public context.ContextOuterClass.OpticalLink build() {
+                context.ContextOuterClass.OpticalLink result = buildPartial();
                 if (!result.isInitialized()) {
                     throw newUninitializedMessageException(result);
                 }
@@ -68989,45 +78954,77 @@ public final class ContextOuterClass {
             }
 
             @java.lang.Override
-            public context.ContextOuterClass.AuthenticationResult buildPartial() {
-                context.ContextOuterClass.AuthenticationResult result = new context.ContextOuterClass.AuthenticationResult(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+            public context.ContextOuterClass.OpticalLink buildPartial() {
+                context.ContextOuterClass.OpticalLink result = new context.ContextOuterClass.OpticalLink(this);
+                result.name_ = name_;
+                if (detailsBuilder_ == null) {
+                    result.details_ = details_;
+                } else {
+                    result.details_ = detailsBuilder_.build();
+                }
+                if (opticalLinkUuidBuilder_ == null) {
+                    result.opticalLinkUuid_ = opticalLinkUuid_;
+                } else {
+                    result.opticalLinkUuid_ = opticalLinkUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.AuthenticationResult result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.authenticated_ = authenticated_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.Message other) {
-                if (other instanceof context.ContextOuterClass.AuthenticationResult) {
-                    return mergeFrom((context.ContextOuterClass.AuthenticationResult) other);
+                if (other instanceof context.ContextOuterClass.OpticalLink) {
+                    return mergeFrom((context.ContextOuterClass.OpticalLink) other);
                 } else {
                     super.mergeFrom(other);
                     return this;
                 }
             }
 
-            public Builder mergeFrom(context.ContextOuterClass.AuthenticationResult other) {
-                if (other == context.ContextOuterClass.AuthenticationResult.getDefaultInstance())
+            public Builder mergeFrom(context.ContextOuterClass.OpticalLink other) {
+                if (other == context.ContextOuterClass.OpticalLink.getDefaultInstance())
                     return this;
-                if (other.hasContextId()) {
-                    mergeContextId(other.getContextId());
+                if (!other.getName().isEmpty()) {
+                    name_ = other.name_;
+                    onChanged();
                 }
-                if (other.getAuthenticated() != false) {
-                    setAuthenticated(other.getAuthenticated());
+                if (other.hasDetails()) {
+                    mergeDetails(other.getDetails());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                if (other.hasOpticalLinkUuid()) {
+                    mergeOpticalLinkUuid(other.getOpticalLinkUuid());
+                }
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -69039,206 +79036,320 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.OpticalLink parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    authenticated_ = input.readBool();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.OpticalLink) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
+            private java.lang.Object name_ = "";
 
-            private context.ContextOuterClass.ContextId contextId_;
+            /**
+             * <code>string name = 1;</code>
+             * @return The name.
+             */
+            public java.lang.String getName() {
+                java.lang.Object ref = name_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    name_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
 
-            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
+            /**
+             * <code>string name = 1;</code>
+             * @return The bytes for name.
+             */
+            public com.google.protobuf.ByteString getNameBytes() {
+                java.lang.Object ref = name_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    name_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
-             * @return Whether the contextId field is set.
+             * <code>string name = 1;</code>
+             * @param value The name to set.
+             * @return This builder for chaining.
              */
-            public boolean hasContextId() {
-                return ((bitField0_ & 0x00000001) != 0);
+            public Builder setName(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                name_ = value;
+                onChanged();
+                return this;
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
-             * @return The contextId.
+             * <code>string name = 1;</code>
+             * @return This builder for chaining.
              */
-            public context.ContextOuterClass.ContextId getContextId() {
-                if (contextIdBuilder_ == null) {
-                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            public Builder clearName() {
+                name_ = getDefaultInstance().getName();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 1;</code>
+             * @param value The bytes for name to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                name_ = value;
+                onChanged();
+                return this;
+            }
+
+            private context.ContextOuterClass.OpticalLinkDetails details_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkDetails, context.ContextOuterClass.OpticalLinkDetails.Builder, context.ContextOuterClass.OpticalLinkDetailsOrBuilder> detailsBuilder_;
+
+            /**
+             * <code>.context.OpticalLinkDetails details = 2;</code>
+             * @return Whether the details field is set.
+             */
+            public boolean hasDetails() {
+                return detailsBuilder_ != null || details_ != null;
+            }
+
+            /**
+             * <code>.context.OpticalLinkDetails details = 2;</code>
+             * @return The details.
+             */
+            public context.ContextOuterClass.OpticalLinkDetails getDetails() {
+                if (detailsBuilder_ == null) {
+                    return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_;
                 } else {
-                    return contextIdBuilder_.getMessage();
+                    return detailsBuilder_.getMessage();
                 }
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            public Builder setContextId(context.ContextOuterClass.ContextId value) {
-                if (contextIdBuilder_ == null) {
+            public Builder setDetails(context.ContextOuterClass.OpticalLinkDetails value) {
+                if (detailsBuilder_ == null) {
                     if (value == null) {
                         throw new NullPointerException();
                     }
-                    contextId_ = value;
+                    details_ = value;
+                    onChanged();
                 } else {
-                    contextIdBuilder_.setMessage(value);
+                    detailsBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
-                if (contextIdBuilder_ == null) {
-                    contextId_ = builderForValue.build();
+            public Builder setDetails(context.ContextOuterClass.OpticalLinkDetails.Builder builderForValue) {
+                if (detailsBuilder_ == null) {
+                    details_ = builderForValue.build();
+                    onChanged();
                 } else {
-                    contextIdBuilder_.setMessage(builderForValue.build());
+                    detailsBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
-                if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+            public Builder mergeDetails(context.ContextOuterClass.OpticalLinkDetails value) {
+                if (detailsBuilder_ == null) {
+                    if (details_ != null) {
+                        details_ = context.ContextOuterClass.OpticalLinkDetails.newBuilder(details_).mergeFrom(value).buildPartial();
                     } else {
-                        contextId_ = value;
+                        details_ = value;
                     }
+                    onChanged();
                 } else {
-                    contextIdBuilder_.mergeFrom(value);
+                    detailsBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
-                    contextIdBuilder_ = null;
+            public Builder clearDetails() {
+                if (detailsBuilder_ == null) {
+                    details_ = null;
+                    onChanged();
+                } else {
+                    details_ = null;
+                    detailsBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000001;
+            public context.ContextOuterClass.OpticalLinkDetails.Builder getDetailsBuilder() {
                 onChanged();
-                return getContextIdFieldBuilder().getBuilder();
+                return getDetailsFieldBuilder().getBuilder();
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-                if (contextIdBuilder_ != null) {
-                    return contextIdBuilder_.getMessageOrBuilder();
+            public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getDetailsOrBuilder() {
+                if (detailsBuilder_ != null) {
+                    return detailsBuilder_.getMessageOrBuilder();
                 } else {
-                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                    return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_;
                 }
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
-                if (contextIdBuilder_ == null) {
-                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
-                    contextId_ = null;
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkDetails, context.ContextOuterClass.OpticalLinkDetails.Builder, context.ContextOuterClass.OpticalLinkDetailsOrBuilder> getDetailsFieldBuilder() {
+                if (detailsBuilder_ == null) {
+                    detailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkDetails, context.ContextOuterClass.OpticalLinkDetails.Builder, context.ContextOuterClass.OpticalLinkDetailsOrBuilder>(getDetails(), getParentForChildren(), isClean());
+                    details_ = null;
                 }
-                return contextIdBuilder_;
+                return detailsBuilder_;
             }
 
-            private boolean authenticated_;
+            private context.ContextOuterClass.OpticalLinkId opticalLinkUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLinkId.Builder, context.ContextOuterClass.OpticalLinkIdOrBuilder> opticalLinkUuidBuilder_;
 
             /**
-             * <code>bool authenticated = 2;</code>
-             * @return The authenticated.
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             * @return Whether the opticalLinkUuid field is set.
              */
-            @java.lang.Override
-            public boolean getAuthenticated() {
-                return authenticated_;
+            public boolean hasOpticalLinkUuid() {
+                return opticalLinkUuidBuilder_ != null || opticalLinkUuid_ != null;
             }
 
             /**
-             * <code>bool authenticated = 2;</code>
-             * @param value The authenticated to set.
-             * @return This builder for chaining.
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             * @return The opticalLinkUuid.
              */
-            public Builder setAuthenticated(boolean value) {
-                authenticated_ = value;
-                bitField0_ |= 0x00000002;
-                onChanged();
+            public context.ContextOuterClass.OpticalLinkId getOpticalLinkUuid() {
+                if (opticalLinkUuidBuilder_ == null) {
+                    return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_;
+                } else {
+                    return opticalLinkUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             */
+            public Builder setOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId value) {
+                if (opticalLinkUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    opticalLinkUuid_ = value;
+                    onChanged();
+                } else {
+                    opticalLinkUuidBuilder_.setMessage(value);
+                }
                 return this;
             }
 
             /**
-             * <code>bool authenticated = 2;</code>
-             * @return This builder for chaining.
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
              */
-            public Builder clearAuthenticated() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                authenticated_ = false;
-                onChanged();
+            public Builder setOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId.Builder builderForValue) {
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuid_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    opticalLinkUuidBuilder_.setMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             */
+            public Builder mergeOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId value) {
+                if (opticalLinkUuidBuilder_ == null) {
+                    if (opticalLinkUuid_ != null) {
+                        opticalLinkUuid_ = context.ContextOuterClass.OpticalLinkId.newBuilder(opticalLinkUuid_).mergeFrom(value).buildPartial();
+                    } else {
+                        opticalLinkUuid_ = value;
+                    }
+                    onChanged();
+                } else {
+                    opticalLinkUuidBuilder_.mergeFrom(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             */
+            public Builder clearOpticalLinkUuid() {
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuid_ = null;
+                    onChanged();
+                } else {
+                    opticalLinkUuid_ = null;
+                    opticalLinkUuidBuilder_ = null;
+                }
                 return this;
             }
 
+            /**
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             */
+            public context.ContextOuterClass.OpticalLinkId.Builder getOpticalLinkUuidBuilder() {
+                onChanged();
+                return getOpticalLinkUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             */
+            public context.ContextOuterClass.OpticalLinkIdOrBuilder getOpticalLinkUuidOrBuilder() {
+                if (opticalLinkUuidBuilder_ != null) {
+                    return opticalLinkUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLinkId.Builder, context.ContextOuterClass.OpticalLinkIdOrBuilder> getOpticalLinkUuidFieldBuilder() {
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLinkId.Builder, context.ContextOuterClass.OpticalLinkIdOrBuilder>(getOpticalLinkUuid(), getParentForChildren(), isClean());
+                    opticalLinkUuid_ = null;
+                }
+                return opticalLinkUuidBuilder_;
+            }
+
             @java.lang.Override
             public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                 return super.setUnknownFields(unknownFields);
@@ -69248,49 +79359,39 @@ public final class ContextOuterClass {
             public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                 return super.mergeUnknownFields(unknownFields);
             }
-            // @@protoc_insertion_point(builder_scope:context.AuthenticationResult)
+            // @@protoc_insertion_point(builder_scope:context.OpticalLink)
         }
 
-        // @@protoc_insertion_point(class_scope:context.AuthenticationResult)
-        private static final context.ContextOuterClass.AuthenticationResult DEFAULT_INSTANCE;
+        // @@protoc_insertion_point(class_scope:context.OpticalLink)
+        private static final context.ContextOuterClass.OpticalLink DEFAULT_INSTANCE;
 
         static {
-            DEFAULT_INSTANCE = new context.ContextOuterClass.AuthenticationResult();
+            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLink();
         }
 
-        public static context.ContextOuterClass.AuthenticationResult getDefaultInstance() {
+        public static context.ContextOuterClass.OpticalLink getDefaultInstance() {
             return DEFAULT_INSTANCE;
         }
 
-        private static final com.google.protobuf.Parser<AuthenticationResult> PARSER = new com.google.protobuf.AbstractParser<AuthenticationResult>() {
+        private static final com.google.protobuf.Parser<OpticalLink> PARSER = new com.google.protobuf.AbstractParser<OpticalLink>() {
 
             @java.lang.Override
-            public AuthenticationResult parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+            public OpticalLink parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new OpticalLink(input, extensionRegistry);
             }
         };
 
-        public static com.google.protobuf.Parser<AuthenticationResult> parser() {
+        public static com.google.protobuf.Parser<OpticalLink> parser() {
             return PARSER;
         }
 
         @java.lang.Override
-        public com.google.protobuf.Parser<AuthenticationResult> getParserForType() {
+        public com.google.protobuf.Parser<OpticalLink> getParserForType() {
             return PARSER;
         }
 
         @java.lang.Override
-        public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
+        public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() {
             return DEFAULT_INSTANCE;
         }
     }
@@ -69611,6 +79712,38 @@ public final class ContextOuterClass {
 
     private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_AuthenticationResult_fieldAccessorTable;
 
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalConfigId_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfigId_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalConfig_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfig_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalConfigList_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfigList_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkId_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkId_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_FiberId_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_FiberId_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Fiber_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Fiber_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLink_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLink_fieldAccessorTable;
+
     public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
         return descriptor;
     }
@@ -69618,7 +79751,7 @@ public final class ContextOuterClass {
     private static com.google.protobuf.Descriptors.FileDescriptor descriptor;
 
     static {
-        java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" + "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" + "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" + "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" + ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" + ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" + "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" + "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" + "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" + "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" + "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" + "t.TeraFlowController\"8\n\rContextIdList\022\'\n" + "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" + "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" + "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" + "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" + "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" + "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" + "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" + "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" + "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." + "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" + "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" + "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" + "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" + "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" + "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" + "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" + "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" + "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" + "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" + "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" + ".Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" + "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" + "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" + "xt.DeviceConfig\022G\n\031device_operational_st" + "atus\030\005 \001(\0162$.context.DeviceOperationalSt" + "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" + "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" + "\007 \003(\0132\021.context.EndPoint\022&\n\ncomponents\030\010" + " \003(\0132\022.context.Component\022(\n\rcontroller_i" + "d\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tComponent" + "\022%\n\016component_uuid\030\001 \001(\0132\r.context.Uuid\022" + "\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattribute" + "s\030\004 \003(\0132\".context.Component.AttributesEn" + "try\022\016\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013" + "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014Device" + "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" + "onfigRule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030" + "\001 \003(\0132\021.context.DeviceId\".\n\nDeviceList\022 " + "\n\007devices\030\001 \003(\0132\017.context.Device\"\216\001\n\014Dev" + "iceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025.context." + "DeviceIdList\022\031\n\021include_endpoints\030\002 \001(\010\022" + "\034\n\024include_config_rules\030\003 \001(\010\022\032\n\022include" + "_components\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " + "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" + "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " + "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016Link" + "Attributes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022" + "\032\n\022used_capacity_gbps\030\002 \001(\002\"\223\001\n\004Link\022 \n\007" + "link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002" + " \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.contex" + "t.EndPointId\022+\n\nattributes\030\004 \001(\0132\027.conte" + "xt.LinkAttributes\"/\n\nLinkIdList\022!\n\010link_" + "ids\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034" + "\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEven" + "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link" + "_id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022" + "&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022" + "#\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n" + "\007Service\022&\n\nservice_id\030\001 \001(\0132\022.context.S" + "erviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003" + " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" + "e_endpoint_ids\030\004 \003(\0132\023.context.EndPointI" + "d\0220\n\023service_constraints\030\005 \003(\0132\023.context" + ".Constraint\022.\n\016service_status\030\006 \001(\0132\026.co" + "ntext.ServiceStatus\022.\n\016service_config\030\007 " + "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" + "\030\010 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" + "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" + "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" + "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" + "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" + "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" + "\030\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilt" + "er\022+\n\013service_ids\030\001 \001(\0132\026.context.Servic" + "eIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n" + "\023include_constraints\030\003 \001(\010\022\034\n\024include_co" + "nfig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005even" + "t\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 " + "\001(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\nco" + "ntext_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsl" + "ice_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022" + "\"\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004n" + "ame\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023." + "context.EndPointId\022.\n\021slice_constraints\030" + "\004 \003(\0132\023.context.Constraint\022-\n\021slice_serv" + "ice_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022sli" + "ce_subslice_ids\030\006 \003(\0132\020.context.SliceId\022" + "*\n\014slice_status\030\007 \001(\0132\024.context.SliceSta" + "tus\022*\n\014slice_config\030\010 \001(\0132\024.context.Slic" + "eConfig\022(\n\013slice_owner\030\t \001(\0132\023.context.S" + "liceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.T" + "imestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001" + "(\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"" + "=\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.c" + "ontext.SliceStatusEnum\"8\n\013SliceConfig\022)\n" + "\014config_rules\030\001 \003(\0132\023.context.ConfigRule" + "\"2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.con" + "text.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(" + "\0132\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tsli" + "ce_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024in" + "clude_endpoint_ids\030\002 \001(\010\022\033\n\023include_cons" + "traints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001" + "(\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024incl" + "ude_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005" + "event\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030" + "\002 \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022" + "&\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"" + "2\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic" + "_name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n" + "\017src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_addres" + "s\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004" + " \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic" + "_class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n" + "\016src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030" + "\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n" + "\003ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010s" + "rc_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_f" + "lags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSe" + "ttings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionS" + "ettings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connect" + "ionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Con" + "nectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context" + ".ConnectionSettings_L4\"\363\001\n\nConnection\022,\n" + "\rconnection_id\030\001 \001(\0132\025.context.Connectio" + "nId\022&\n\nservice_id\030\002 \001(\0132\022.context.Servic" + "eId\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.co" + "ntext.EndPointId\022+\n\017sub_service_ids\030\004 \003(" + "\0132\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132" + "\033.context.ConnectionSettings\"A\n\020Connecti" + "onIdList\022-\n\016connection_ids\030\001 \003(\0132\025.conte" + "xt.ConnectionId\":\n\016ConnectionList\022(\n\013con" + "nections\030\001 \003(\0132\023.context.Connection\"^\n\017C" + "onnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context." + "Event\022,\n\rconnection_id\030\002 \001(\0132\025.context.C" + "onnectionId\"\202\001\n\nEndPointId\022(\n\013topology_i" + "d\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_i" + "d\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_u" + "uid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020" + "kpi_sample_types\030\004 \003(\0162\037.kpi_sample_type" + "s.KpiSampleType\022,\n\021endpoint_location\030\005 \001" + "(\0132\021.context.Location\"{\n\014EndPointName\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 " + "\001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointId" + "List\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.End" + "PointId\"A\n\020EndPointNameList\022-\n\016endpoint_" + "names\030\001 \003(\0132\025.context.EndPointName\"A\n\021Co" + "nfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n" + "\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022" + "(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointI" + "d\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n" + "\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Co" + "nfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.context" + ".ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.cont" + "ext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021C" + "onstraint_Custom\022\027\n\017constraint_type\030\001 \001(" + "\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constrain" + "t_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rd" + "uration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010la" + "titude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locat" + "ion\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 " + "\001(\0132\025.context.GPS_PositionH\000B\n\n\010location" + "\"l\n\033Constraint_EndPointLocation\022(\n\013endpo" + "int_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loc" + "ation\030\002 \001(\0132\021.context.Location\"Y\n\033Constr" + "aint_EndPointPriority\022(\n\013endpoint_id\030\001 \001" + "(\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(" + "\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_laten" + "cy_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025" + "\n\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_" + "Availability\022\032\n\022num_disjoint_paths\030\001 \001(\r" + "\022\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001" + "(\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017" + "isolation_level\030\001 \003(\0162\033.context.Isolatio" + "nLevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014" + "is_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021" + ".context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132" + "\023.context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017" + ".context.LinkId\"\333\004\n\nConstraint\022-\n\006action" + "\030\001 \001(\0162\035.context.ConstraintActionEnum\022,\n" + "\006custom\030\002 \001(\0132\032.context.Constraint_Custo" + "mH\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrai" + "nt_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\013" + "2$.context.Constraint_EndPointLocationH\000" + "\022A\n\021endpoint_priority\030\005 \001(\0132$.context.Co" + "nstraint_EndPointPriorityH\000\0228\n\014sla_capac" + "ity\030\006 \001(\0132 .context.Constraint_SLA_Capac" + "ityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Con" + "straint_SLA_LatencyH\000\022@\n\020sla_availabilit" + "y\030\010 \001(\0132$.context.Constraint_SLA_Availab" + "ilityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context" + ".Constraint_SLA_Isolation_levelH\000\0224\n\nexc" + "lusions\030\n \001(\0132\036.context.Constraint_Exclu" + "sionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControl" + "ler\022&\n\ncontext_id\030\001 \001(\0132\022.context.Contex" + "tId\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n" + "\024AuthenticationResult\022&\n\ncontext_id\030\001 \001(" + "\0132\022.context.ContextId\022\025\n\rauthenticated\030\002" + " \001(\010*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UNDEF" + "INED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTTYP" + "E_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\321\002\n\020Dev" + "iceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINED\020" + "\000\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVICE" + "DRIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER_P" + "4\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOLOG" + "Y\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DEVI" + "CEDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2VPN" + "\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010\022\032\n\026" + "DEVICEDRIVER_FLEXSCALE\020\t\022\032\n\026DEVICEDRIVER" + "_IETF_ACTN\020\n*\217\001\n\033DeviceOperationalStatus" + "Enum\022%\n!DEVICEOPERATIONALSTATUS_UNDEFINE" + "D\020\000\022$\n DEVICEOPERATIONALSTATUS_DISABLED\020" + "\001\022#\n\037DEVICEOPERATIONALSTATUS_ENABLED\020\002*\252" + "\001\n\017ServiceTypeEnum\022\027\n\023SERVICETYPE_UNKNOW" + "N\020\000\022\024\n\020SERVICETYPE_L3NM\020\001\022\024\n\020SERVICETYPE" + "_L2NM\020\002\022)\n%SERVICETYPE_TAPI_CONNECTIVITY" + "_SERVICE\020\003\022\022\n\016SERVICETYPE_TE\020\004\022\023\n\017SERVIC" + "ETYPE_E2E\020\005*\304\001\n\021ServiceStatusEnum\022\033\n\027SER" + "VICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICESTATUS_" + "PLANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032\n\026S" + "ERVICESTATUS_UPDATING\020\003\022!\n\035SERVICESTATUS" + "_PENDING_REMOVAL\020\004\022\036\n\032SERVICESTATUS_SLA_" + "VIOLATED\020\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLICES" + "TATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_PLANNED" + "\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICESTATUS_" + "ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030SLIC" + "ESTATUS_SLA_VIOLATED\020\005*]\n\020ConfigActionEn" + "um\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020CONFIG" + "ACTION_SET\020\001\022\027\n\023CONFIGACTION_DELETE\020\002*m\n" + "\024ConstraintActionEnum\022\036\n\032CONSTRAINTACTIO" + "N_UNDEFINED\020\000\022\030\n\024CONSTRAINTACTION_SET\020\001\022" + "\033\n\027CONSTRAINTACTION_DELETE\020\002*\203\002\n\022Isolati" + "onLevelEnum\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYSICA" + "L_ISOLATION\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022\025\n\021" + "PROCESS_ISOLATION\020\003\022\035\n\031PHYSICAL_MEMORY_I" + "SOLATION\020\004\022\036\n\032PHYSICAL_NETWORK_ISOLATION" + "\020\005\022\036\n\032VIRTUAL_RESOURCE_ISOLATION\020\006\022\037\n\033NE" + "TWORK_FUNCTIONS_ISOLATION\020\007\022\025\n\021SERVICE_I" + "SOLATION\020\0102\245\026\n\016ContextService\022:\n\016ListCon" + "textIds\022\016.context.Empty\032\026.context.Contex" + "tIdList\"\000\0226\n\014ListContexts\022\016.context.Empt" + "y\032\024.context.ContextList\"\000\0224\n\nGetContext\022" + "\022.context.ContextId\032\020.context.Context\"\000\022" + "4\n\nSetContext\022\020.context.Context\032\022.contex" + "t.ContextId\"\000\0225\n\rRemoveContext\022\022.context" + ".ContextId\032\016.context.Empty\"\000\022=\n\020GetConte" + "xtEvents\022\016.context.Empty\032\025.context.Conte" + "xtEvent\"\0000\001\022@\n\017ListTopologyIds\022\022.context" + ".ContextId\032\027.context.TopologyIdList\"\000\022=\n" + "\016ListTopologies\022\022.context.ContextId\032\025.co" + "ntext.TopologyList\"\000\0227\n\013GetTopology\022\023.co" + "ntext.TopologyId\032\021.context.Topology\"\000\022E\n" + "\022GetTopologyDetails\022\023.context.TopologyId" + "\032\030.context.TopologyDetails\"\000\0227\n\013SetTopol" + "ogy\022\021.context.Topology\032\023.context.Topolog" + "yId\"\000\0227\n\016RemoveTopology\022\023.context.Topolo" + "gyId\032\016.context.Empty\"\000\022?\n\021GetTopologyEve" + "nts\022\016.context.Empty\032\026.context.TopologyEv" + "ent\"\0000\001\0228\n\rListDeviceIds\022\016.context.Empty" + "\032\025.context.DeviceIdList\"\000\0224\n\013ListDevices" + "\022\016.context.Empty\032\023.context.DeviceList\"\000\022" + "1\n\tGetDevice\022\021.context.DeviceId\032\017.contex" + "t.Device\"\000\0221\n\tSetDevice\022\017.context.Device" + "\032\021.context.DeviceId\"\000\0223\n\014RemoveDevice\022\021." + "context.DeviceId\032\016.context.Empty\"\000\022;\n\017Ge" + "tDeviceEvents\022\016.context.Empty\032\024.context." + "DeviceEvent\"\0000\001\022<\n\014SelectDevice\022\025.contex" + "t.DeviceFilter\032\023.context.DeviceList\"\000\022I\n" + "\021ListEndPointNames\022\027.context.EndPointIdL" + "ist\032\031.context.EndPointNameList\"\000\0224\n\013List" + "LinkIds\022\016.context.Empty\032\023.context.LinkId" + "List\"\000\0220\n\tListLinks\022\016.context.Empty\032\021.co" + "ntext.LinkList\"\000\022+\n\007GetLink\022\017.context.Li" + "nkId\032\r.context.Link\"\000\022+\n\007SetLink\022\r.conte" + "xt.Link\032\017.context.LinkId\"\000\022/\n\nRemoveLink" + "\022\017.context.LinkId\032\016.context.Empty\"\000\0227\n\rG" + "etLinkEvents\022\016.context.Empty\032\022.context.L" + "inkEvent\"\0000\001\022>\n\016ListServiceIds\022\022.context" + ".ContextId\032\026.context.ServiceIdList\"\000\022:\n\014" + "ListServices\022\022.context.ContextId\032\024.conte" + "xt.ServiceList\"\000\0224\n\nGetService\022\022.context" + ".ServiceId\032\020.context.Service\"\000\0224\n\nSetSer" + "vice\022\020.context.Service\032\022.context.Service" + "Id\"\000\0226\n\014UnsetService\022\020.context.Service\032\022" + ".context.ServiceId\"\000\0225\n\rRemoveService\022\022." + "context.ServiceId\032\016.context.Empty\"\000\022=\n\020G" + "etServiceEvents\022\016.context.Empty\032\025.contex" + "t.ServiceEvent\"\0000\001\022?\n\rSelectService\022\026.co" + "ntext.ServiceFilter\032\024.context.ServiceLis" + "t\"\000\022:\n\014ListSliceIds\022\022.context.ContextId\032" + "\024.context.SliceIdList\"\000\0226\n\nListSlices\022\022." + "context.ContextId\032\022.context.SliceList\"\000\022" + ".\n\010GetSlice\022\020.context.SliceId\032\016.context." + "Slice\"\000\022.\n\010SetSlice\022\016.context.Slice\032\020.co" + "ntext.SliceId\"\000\0220\n\nUnsetSlice\022\016.context." + "Slice\032\020.context.SliceId\"\000\0221\n\013RemoveSlice" + "\022\020.context.SliceId\032\016.context.Empty\"\000\0229\n\016" + "GetSliceEvents\022\016.context.Empty\032\023.context" + ".SliceEvent\"\0000\001\0229\n\013SelectSlice\022\024.context" + ".SliceFilter\032\022.context.SliceList\"\000\022D\n\021Li" + "stConnectionIds\022\022.context.ServiceId\032\031.co" + "ntext.ConnectionIdList\"\000\022@\n\017ListConnecti" + "ons\022\022.context.ServiceId\032\027.context.Connec" + "tionList\"\000\022=\n\rGetConnection\022\025.context.Co" + "nnectionId\032\023.context.Connection\"\000\022=\n\rSet" + "Connection\022\023.context.Connection\032\025.contex" + "t.ConnectionId\"\000\022;\n\020RemoveConnection\022\025.c" + "ontext.ConnectionId\032\016.context.Empty\"\000\022C\n" + "\023GetConnectionEvents\022\016.context.Empty\032\030.c" + "ontext.ConnectionEvent\"\0000\001b\006proto3" };
+        java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" + "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" + "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" + "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" + ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" + ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" + "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" + "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" + "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" + "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" + "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" + "t.TeraFlowController\"8\n\rContextIdList\022\'\n" + "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" + "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" + "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" + "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" + "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" + "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" + "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" + "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" + "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." + "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" + "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" + "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" + "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" + "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" + "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" + "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" + "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" + "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" + "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" + "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" + ".Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" + "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" + "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" + "xt.DeviceConfig\022G\n\031device_operational_st" + "atus\030\005 \001(\0162$.context.DeviceOperationalSt" + "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" + "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" + "\007 \003(\0132\021.context.EndPoint\022&\n\ncomponents\030\010" + " \003(\0132\022.context.Component\022(\n\rcontroller_i" + "d\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tComponent" + "\022%\n\016component_uuid\030\001 \001(\0132\r.context.Uuid\022" + "\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattribute" + "s\030\004 \003(\0132\".context.Component.AttributesEn" + "try\022\016\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013" + "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014Device" + "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" + "onfigRule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030" + "\001 \003(\0132\021.context.DeviceId\".\n\nDeviceList\022 " + "\n\007devices\030\001 \003(\0132\017.context.Device\"\216\001\n\014Dev" + "iceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025.context." + "DeviceIdList\022\031\n\021include_endpoints\030\002 \001(\010\022" + "\034\n\024include_config_rules\030\003 \001(\010\022\032\n\022include" + "_components\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " + "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" + "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " + "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016Link" + "Attributes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022" + "\032\n\022used_capacity_gbps\030\002 \001(\002\"\223\001\n\004Link\022 \n\007" + "link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002" + " \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.contex" + "t.EndPointId\022+\n\nattributes\030\004 \001(\0132\027.conte" + "xt.LinkAttributes\"/\n\nLinkIdList\022!\n\010link_" + "ids\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034" + "\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEven" + "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link" + "_id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022" + "&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022" + "#\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n" + "\007Service\022&\n\nservice_id\030\001 \001(\0132\022.context.S" + "erviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003" + " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" + "e_endpoint_ids\030\004 \003(\0132\023.context.EndPointI" + "d\0220\n\023service_constraints\030\005 \003(\0132\023.context" + ".Constraint\022.\n\016service_status\030\006 \001(\0132\026.co" + "ntext.ServiceStatus\022.\n\016service_config\030\007 " + "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" + "\030\010 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" + "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" + "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" + "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" + "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" + "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" + "\030\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilt" + "er\022+\n\013service_ids\030\001 \001(\0132\026.context.Servic" + "eIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n" + "\023include_constraints\030\003 \001(\010\022\034\n\024include_co" + "nfig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005even" + "t\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 " + "\001(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\nco" + "ntext_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsl" + "ice_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022" + "\"\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004n" + "ame\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023." + "context.EndPointId\022.\n\021slice_constraints\030" + "\004 \003(\0132\023.context.Constraint\022-\n\021slice_serv" + "ice_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022sli" + "ce_subslice_ids\030\006 \003(\0132\020.context.SliceId\022" + "*\n\014slice_status\030\007 \001(\0132\024.context.SliceSta" + "tus\022*\n\014slice_config\030\010 \001(\0132\024.context.Slic" + "eConfig\022(\n\013slice_owner\030\t \001(\0132\023.context.S" + "liceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.T" + "imestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001" + "(\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"" + "=\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.c" + "ontext.SliceStatusEnum\"8\n\013SliceConfig\022)\n" + "\014config_rules\030\001 \003(\0132\023.context.ConfigRule" + "\"2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.con" + "text.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(" + "\0132\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tsli" + "ce_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024in" + "clude_endpoint_ids\030\002 \001(\010\022\033\n\023include_cons" + "traints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001" + "(\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024incl" + "ude_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005" + "event\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030" + "\002 \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022" + "&\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"" + "2\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic" + "_name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n" + "\017src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_addres" + "s\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004" + " \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic" + "_class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n" + "\016src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030" + "\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n" + "\003ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010s" + "rc_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_f" + "lags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSe" + "ttings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionS" + "ettings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connect" + "ionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Con" + "nectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context" + ".ConnectionSettings_L4\"\363\001\n\nConnection\022,\n" + "\rconnection_id\030\001 \001(\0132\025.context.Connectio" + "nId\022&\n\nservice_id\030\002 \001(\0132\022.context.Servic" + "eId\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.co" + "ntext.EndPointId\022+\n\017sub_service_ids\030\004 \003(" + "\0132\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132" + "\033.context.ConnectionSettings\"A\n\020Connecti" + "onIdList\022-\n\016connection_ids\030\001 \003(\0132\025.conte" + "xt.ConnectionId\":\n\016ConnectionList\022(\n\013con" + "nections\030\001 \003(\0132\023.context.Connection\"^\n\017C" + "onnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context." + "Event\022,\n\rconnection_id\030\002 \001(\0132\025.context.C" + "onnectionId\"\202\001\n\nEndPointId\022(\n\013topology_i" + "d\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_i" + "d\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_u" + "uid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020" + "kpi_sample_types\030\004 \003(\0162\037.kpi_sample_type" + "s.KpiSampleType\022,\n\021endpoint_location\030\005 \001" + "(\0132\021.context.Location\"{\n\014EndPointName\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 " + "\001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointId" + "List\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.End" + "PointId\"A\n\020EndPointNameList\022-\n\016endpoint_" + "names\030\001 \003(\0132\025.context.EndPointName\"A\n\021Co" + "nfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n" + "\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022" + "(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointI" + "d\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n" + "\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Co" + "nfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.context" + ".ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.cont" + "ext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021C" + "onstraint_Custom\022\027\n\017constraint_type\030\001 \001(" + "\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constrain" + "t_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rd" + "uration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010la" + "titude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locat" + "ion\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 " + "\001(\0132\025.context.GPS_PositionH\000B\n\n\010location" + "\"l\n\033Constraint_EndPointLocation\022(\n\013endpo" + "int_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loc" + "ation\030\002 \001(\0132\021.context.Location\"Y\n\033Constr" + "aint_EndPointPriority\022(\n\013endpoint_id\030\001 \001" + "(\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(" + "\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_laten" + "cy_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025" + "\n\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_" + "Availability\022\032\n\022num_disjoint_paths\030\001 \001(\r" + "\022\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001" + "(\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017" + "isolation_level\030\001 \003(\0162\033.context.Isolatio" + "nLevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014" + "is_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021" + ".context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132" + "\023.context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017" + ".context.LinkId\"\333\004\n\nConstraint\022-\n\006action" + "\030\001 \001(\0162\035.context.ConstraintActionEnum\022,\n" + "\006custom\030\002 \001(\0132\032.context.Constraint_Custo" + "mH\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrai" + "nt_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\013" + "2$.context.Constraint_EndPointLocationH\000" + "\022A\n\021endpoint_priority\030\005 \001(\0132$.context.Co" + "nstraint_EndPointPriorityH\000\0228\n\014sla_capac" + "ity\030\006 \001(\0132 .context.Constraint_SLA_Capac" + "ityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Con" + "straint_SLA_LatencyH\000\022@\n\020sla_availabilit" + "y\030\010 \001(\0132$.context.Constraint_SLA_Availab" + "ilityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context" + ".Constraint_SLA_Isolation_levelH\000\0224\n\nexc" + "lusions\030\n \001(\0132\036.context.Constraint_Exclu" + "sionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControl" + "ler\022&\n\ncontext_id\030\001 \001(\0132\022.context.Contex" + "tId\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n" + "\024AuthenticationResult\022&\n\ncontext_id\030\001 \001(" + "\0132\022.context.ContextId\022\025\n\rauthenticated\030\002" + " \001(\010\"-\n\017OpticalConfigId\022\032\n\022opticalconfig" + "_uuid\030\001 \001(\t\"S\n\rOpticalConfig\0222\n\020opticalc" + "onfig_id\030\001 \001(\0132\030.context.OpticalConfigId" + "\022\016\n\006config\030\002 \001(\t\"C\n\021OpticalConfigList\022.\n" + "\016opticalconfigs\030\001 \003(\0132\026.context.OpticalC" + "onfig\"9\n\rOpticalLinkId\022(\n\021optical_link_u" + "uid\030\001 \001(\0132\r.context.Uuid\",\n\007FiberId\022!\n\nf" + "iber_uuid\030\001 \001(\0132\r.context.Uuid\"\341\001\n\005Fiber" + "\022\n\n\002ID\030\n \001(\t\022\020\n\010src_port\030\001 \001(\t\022\020\n\010dst_po" + "rt\030\002 \001(\t\022\027\n\017local_peer_port\030\003 \001(\t\022\030\n\020rem" + "ote_peer_port\030\004 \001(\t\022\017\n\007c_slots\030\005 \003(\005\022\017\n\007" + "l_slots\030\006 \003(\005\022\017\n\007s_slots\030\007 \003(\005\022\016\n\006length" + "\030\010 \001(\002\022\014\n\004used\030\t \001(\010\022$\n\nfiber_uuid\030\013 \001(\013" + "2\020.context.FiberId\"d\n\022OpticalLinkDetails" + "\022\016\n\006length\030\001 \001(\002\022\016\n\006source\030\002 \001(\t\022\016\n\006targ" + "et\030\003 \001(\t\022\036\n\006fibers\030\004 \003(\0132\016.context.Fiber" + "\"|\n\013OpticalLink\022\014\n\004name\030\001 \001(\t\022,\n\007details" + "\030\002 \001(\0132\033.context.OpticalLinkDetails\0221\n\021o" + "ptical_link_uuid\030\003 \001(\0132\026.context.Optical" + "LinkId*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UND" + "EFINED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTT" + "YPE_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\350\002\n\020D" + "eviceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINE" + "D\020\000\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVI" + "CEDRIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER" + "_P4\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOL" + "OGY\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DE" + "VICEDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2V" + "PN\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010\022\034" + "\n\030DEVICEDRIVER_OPTICAL_TFS\020\t\022\032\n\026DEVICEDR" + "IVER_IETF_ACTN\020\n\022\023\n\017DEVICEDRIVER_OC\020\013*\217\001" + "\n\033DeviceOperationalStatusEnum\022%\n!DEVICEO" + "PERATIONALSTATUS_UNDEFINED\020\000\022$\n DEVICEOP" + "ERATIONALSTATUS_DISABLED\020\001\022#\n\037DEVICEOPER" + "ATIONALSTATUS_ENABLED\020\002*\320\001\n\017ServiceTypeE" + "num\022\027\n\023SERVICETYPE_UNKNOWN\020\000\022\024\n\020SERVICET" + "YPE_L3NM\020\001\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERV" + "ICETYPE_TAPI_CONNECTIVITY_SERVICE\020\003\022\022\n\016S" + "ERVICETYPE_TE\020\004\022\023\n\017SERVICETYPE_E2E\020\005\022$\n " + "SERVICETYPE_OPTICAL_CONNECTIVITY\020\006*\304\001\n\021S" + "erviceStatusEnum\022\033\n\027SERVICESTATUS_UNDEFI" + "NED\020\000\022\031\n\025SERVICESTATUS_PLANNED\020\001\022\030\n\024SERV" + "ICESTATUS_ACTIVE\020\002\022\032\n\026SERVICESTATUS_UPDA" + "TING\020\003\022!\n\035SERVICESTATUS_PENDING_REMOVAL\020" + "\004\022\036\n\032SERVICESTATUS_SLA_VIOLATED\020\005*\251\001\n\017Sl" + "iceStatusEnum\022\031\n\025SLICESTATUS_UNDEFINED\020\000" + "\022\027\n\023SLICESTATUS_PLANNED\020\001\022\024\n\020SLICESTATUS" + "_INIT\020\002\022\026\n\022SLICESTATUS_ACTIVE\020\003\022\026\n\022SLICE" + "STATUS_DEINIT\020\004\022\034\n\030SLICESTATUS_SLA_VIOLA" + "TED\020\005*]\n\020ConfigActionEnum\022\032\n\026CONFIGACTIO" + "N_UNDEFINED\020\000\022\024\n\020CONFIGACTION_SET\020\001\022\027\n\023C" + "ONFIGACTION_DELETE\020\002*m\n\024ConstraintAction" + "Enum\022\036\n\032CONSTRAINTACTION_UNDEFINED\020\000\022\030\n\024" + "CONSTRAINTACTION_SET\020\001\022\033\n\027CONSTRAINTACTI" + "ON_DELETE\020\002*\203\002\n\022IsolationLevelEnum\022\020\n\014NO" + "_ISOLATION\020\000\022\026\n\022PHYSICAL_ISOLATION\020\001\022\025\n\021" + "LOGICAL_ISOLATION\020\002\022\025\n\021PROCESS_ISOLATION" + "\020\003\022\035\n\031PHYSICAL_MEMORY_ISOLATION\020\004\022\036\n\032PHY" + "SICAL_NETWORK_ISOLATION\020\005\022\036\n\032VIRTUAL_RES" + "OURCE_ISOLATION\020\006\022\037\n\033NETWORK_FUNCTIONS_I" + "SOLATION\020\007\022\025\n\021SERVICE_ISOLATION\020\0102\246\031\n\016Co" + "ntextService\022:\n\016ListContextIds\022\016.context" + ".Empty\032\026.context.ContextIdList\"\000\0226\n\014List" + "Contexts\022\016.context.Empty\032\024.context.Conte" + "xtList\"\000\0224\n\nGetContext\022\022.context.Context" + "Id\032\020.context.Context\"\000\0224\n\nSetContext\022\020.c" + "ontext.Context\032\022.context.ContextId\"\000\0225\n\r" + "RemoveContext\022\022.context.ContextId\032\016.cont" + "ext.Empty\"\000\022=\n\020GetContextEvents\022\016.contex" + "t.Empty\032\025.context.ContextEvent\"\0000\001\022@\n\017Li" + "stTopologyIds\022\022.context.ContextId\032\027.cont" + "ext.TopologyIdList\"\000\022=\n\016ListTopologies\022\022" + ".context.ContextId\032\025.context.TopologyLis" + "t\"\000\0227\n\013GetTopology\022\023.context.TopologyId\032" + "\021.context.Topology\"\000\022E\n\022GetTopologyDetai" + "ls\022\023.context.TopologyId\032\030.context.Topolo" + "gyDetails\"\000\0227\n\013SetTopology\022\021.context.Top" + "ology\032\023.context.TopologyId\"\000\0227\n\016RemoveTo" + "pology\022\023.context.TopologyId\032\016.context.Em" + "pty\"\000\022?\n\021GetTopologyEvents\022\016.context.Emp" + "ty\032\026.context.TopologyEvent\"\0000\001\0228\n\rListDe" + "viceIds\022\016.context.Empty\032\025.context.Device" + "IdList\"\000\0224\n\013ListDevices\022\016.context.Empty\032" + "\023.context.DeviceList\"\000\0221\n\tGetDevice\022\021.co" + "ntext.DeviceId\032\017.context.Device\"\000\0221\n\tSet" + "Device\022\017.context.Device\032\021.context.Device" + "Id\"\000\0223\n\014RemoveDevice\022\021.context.DeviceId\032" + "\016.context.Empty\"\000\022;\n\017GetDeviceEvents\022\016.c" + "ontext.Empty\032\024.context.DeviceEvent\"\0000\001\022<" + "\n\014SelectDevice\022\025.context.DeviceFilter\032\023." + "context.DeviceList\"\000\022I\n\021ListEndPointName" + "s\022\027.context.EndPointIdList\032\031.context.End" + "PointNameList\"\000\0224\n\013ListLinkIds\022\016.context" + ".Empty\032\023.context.LinkIdList\"\000\0220\n\tListLin" + "ks\022\016.context.Empty\032\021.context.LinkList\"\000\022" + "+\n\007GetLink\022\017.context.LinkId\032\r.context.Li" + "nk\"\000\022+\n\007SetLink\022\r.context.Link\032\017.context" + ".LinkId\"\000\022/\n\nRemoveLink\022\017.context.LinkId" + "\032\016.context.Empty\"\000\0227\n\rGetLinkEvents\022\016.co" + "ntext.Empty\032\022.context.LinkEvent\"\0000\001\022>\n\016L" + "istServiceIds\022\022.context.ContextId\032\026.cont" + "ext.ServiceIdList\"\000\022:\n\014ListServices\022\022.co" + "ntext.ContextId\032\024.context.ServiceList\"\000\022" + "4\n\nGetService\022\022.context.ServiceId\032\020.cont" + "ext.Service\"\000\0224\n\nSetService\022\020.context.Se" + "rvice\032\022.context.ServiceId\"\000\0226\n\014UnsetServ" + "ice\022\020.context.Service\032\022.context.ServiceI" + "d\"\000\0225\n\rRemoveService\022\022.context.ServiceId" + "\032\016.context.Empty\"\000\022=\n\020GetServiceEvents\022\016" + ".context.Empty\032\025.context.ServiceEvent\"\0000" + "\001\022?\n\rSelectService\022\026.context.ServiceFilt" + "er\032\024.context.ServiceList\"\000\022:\n\014ListSliceI" + "ds\022\022.context.ContextId\032\024.context.SliceId" + "List\"\000\0226\n\nListSlices\022\022.context.ContextId" + "\032\022.context.SliceList\"\000\022.\n\010GetSlice\022\020.con" + "text.SliceId\032\016.context.Slice\"\000\022.\n\010SetSli" + "ce\022\016.context.Slice\032\020.context.SliceId\"\000\0220" + "\n\nUnsetSlice\022\016.context.Slice\032\020.context.S" + "liceId\"\000\0221\n\013RemoveSlice\022\020.context.SliceI" + "d\032\016.context.Empty\"\000\0229\n\016GetSliceEvents\022\016." + "context.Empty\032\023.context.SliceEvent\"\0000\001\0229" + "\n\013SelectSlice\022\024.context.SliceFilter\032\022.co" + "ntext.SliceList\"\000\022D\n\021ListConnectionIds\022\022" + ".context.ServiceId\032\031.context.ConnectionI" + "dList\"\000\022@\n\017ListConnections\022\022.context.Ser" + "viceId\032\027.context.ConnectionList\"\000\022=\n\rGet" + "Connection\022\025.context.ConnectionId\032\023.cont" + "ext.Connection\"\000\022=\n\rSetConnection\022\023.cont" + "ext.Connection\032\025.context.ConnectionId\"\000\022" + ";\n\020RemoveConnection\022\025.context.Connection" + "Id\032\016.context.Empty\"\000\022C\n\023GetConnectionEve" + "nts\022\016.context.Empty\032\030.context.Connection" + "Event\"\0000\001\022@\n\020GetOpticalConfig\022\016.context." + "Empty\032\032.context.OpticalConfigList\"\000\022F\n\020S" + "etOpticalConfig\022\026.context.OpticalConfig\032" + "\030.context.OpticalConfigId\"\000\022I\n\023SelectOpt" + "icalConfig\022\030.context.OpticalConfigId\032\026.c" + "ontext.OpticalConfig\"\000\0228\n\016SetOpticalLink" + "\022\024.context.OpticalLink\032\016.context.Empty\"\000" + "\022@\n\016GetOpticalLink\022\026.context.OpticalLink" + "Id\032\024.context.OpticalLink\"\000\022.\n\010GetFiber\022\020" + ".context.FiberId\032\016.context.Fiber\"\000b\006prot" + "o3" };
         descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { acl.Acl.getDescriptor(), kpi_sample_types.KpiSampleTypes.getDescriptor() });
         internal_static_context_Empty_descriptor = getDescriptor().getMessageTypes().get(0);
         internal_static_context_Empty_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Empty_descriptor, new java.lang.String[] {});
@@ -69778,6 +79911,22 @@ public final class ContextOuterClass {
         internal_static_context_TeraFlowController_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TeraFlowController_descriptor, new java.lang.String[] { "ContextId", "IpAddress", "Port" });
         internal_static_context_AuthenticationResult_descriptor = getDescriptor().getMessageTypes().get(77);
         internal_static_context_AuthenticationResult_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_AuthenticationResult_descriptor, new java.lang.String[] { "ContextId", "Authenticated" });
+        internal_static_context_OpticalConfigId_descriptor = getDescriptor().getMessageTypes().get(78);
+        internal_static_context_OpticalConfigId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfigId_descriptor, new java.lang.String[] { "OpticalconfigUuid" });
+        internal_static_context_OpticalConfig_descriptor = getDescriptor().getMessageTypes().get(79);
+        internal_static_context_OpticalConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfig_descriptor, new java.lang.String[] { "OpticalconfigId", "Config" });
+        internal_static_context_OpticalConfigList_descriptor = getDescriptor().getMessageTypes().get(80);
+        internal_static_context_OpticalConfigList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfigList_descriptor, new java.lang.String[] { "Opticalconfigs" });
+        internal_static_context_OpticalLinkId_descriptor = getDescriptor().getMessageTypes().get(81);
+        internal_static_context_OpticalLinkId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkId_descriptor, new java.lang.String[] { "OpticalLinkUuid" });
+        internal_static_context_FiberId_descriptor = getDescriptor().getMessageTypes().get(82);
+        internal_static_context_FiberId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_FiberId_descriptor, new java.lang.String[] { "FiberUuid" });
+        internal_static_context_Fiber_descriptor = getDescriptor().getMessageTypes().get(83);
+        internal_static_context_Fiber_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Fiber_descriptor, new java.lang.String[] { "ID", "SrcPort", "DstPort", "LocalPeerPort", "RemotePeerPort", "CSlots", "LSlots", "SSlots", "Length", "Used", "FiberUuid" });
+        internal_static_context_OpticalLinkDetails_descriptor = getDescriptor().getMessageTypes().get(84);
+        internal_static_context_OpticalLinkDetails_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_descriptor, new java.lang.String[] { "Length", "Source", "Target", "Fibers" });
+        internal_static_context_OpticalLink_descriptor = getDescriptor().getMessageTypes().get(85);
+        internal_static_context_OpticalLink_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLink_descriptor, new java.lang.String[] { "Name", "Details", "OpticalLinkUuid" });
         acl.Acl.getDescriptor();
         kpi_sample_types.KpiSampleTypes.getDescriptor();
     }
diff --git a/src/policy/target/generated-sources/grpc/context/ContextService.java b/src/policy/target/generated-sources/grpc/context/ContextService.java
index f1c089fb564dbd0546b84ea19aa35f26ff331881..32544e6beba009b31b06dcd583893933c15eb1fe 100644
--- a/src/policy/target/generated-sources/grpc/context/ContextService.java
+++ b/src/policy/target/generated-sources/grpc/context/ContextService.java
@@ -89,6 +89,23 @@ public interface ContextService extends MutinyService {
 
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeConnection(context.ContextOuterClass.ConnectionId request);
 
+    /**
+     * <pre>
+     *  ------------------------------ Experimental -----------------------------
+     * </pre>
+     */
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigList> getOpticalConfig(context.ContextOuterClass.Empty request);
+
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigId> setOpticalConfig(context.ContextOuterClass.OpticalConfig request);
+
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfig> selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request);
+
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> setOpticalLink(context.ContextOuterClass.OpticalLink request);
+
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalLink> getOpticalLink(context.ContextOuterClass.OpticalLinkId request);
+
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.Fiber> getFiber(context.ContextOuterClass.FiberId request);
+
     io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request);
 
     io.smallrye.mutiny.Multi<context.ContextOuterClass.TopologyEvent> getTopologyEvents(context.ContextOuterClass.Empty request);
diff --git a/src/policy/target/generated-sources/grpc/context/ContextServiceBean.java b/src/policy/target/generated-sources/grpc/context/ContextServiceBean.java
index db1b9c1705820591966896bfbe353360304f58a0..d3c1b628573bf328f51de68a68d21690c2ff7045 100644
--- a/src/policy/target/generated-sources/grpc/context/ContextServiceBean.java
+++ b/src/policy/target/generated-sources/grpc/context/ContextServiceBean.java
@@ -391,6 +391,60 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI
         }
     }
 
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigList> getOpticalConfig(context.ContextOuterClass.Empty request) {
+        try {
+            return delegate.getOpticalConfig(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigId> setOpticalConfig(context.ContextOuterClass.OpticalConfig request) {
+        try {
+            return delegate.setOpticalConfig(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfig> selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) {
+        try {
+            return delegate.selectOpticalConfig(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> setOpticalLink(context.ContextOuterClass.OpticalLink request) {
+        try {
+            return delegate.setOpticalLink(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalLink> getOpticalLink(context.ContextOuterClass.OpticalLinkId request) {
+        try {
+            return delegate.getOpticalLink(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Fiber> getFiber(context.ContextOuterClass.FiberId request) {
+        try {
+            return delegate.getFiber(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+    }
+
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request) {
         try {
diff --git a/src/policy/target/generated-sources/grpc/context/ContextServiceClient.java b/src/policy/target/generated-sources/grpc/context/ContextServiceClient.java
index 88ab831f59f17e1e1ef197109a5917cda49dcc76..b1773578d3448de901839bf6e70e855ff58ad9e5 100644
--- a/src/policy/target/generated-sources/grpc/context/ContextServiceClient.java
+++ b/src/policy/target/generated-sources/grpc/context/ContextServiceClient.java
@@ -235,6 +235,36 @@ public class ContextServiceClient implements ContextService, MutinyClient<Mutiny
         return stub.removeConnection(request);
     }
 
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigList> getOpticalConfig(context.ContextOuterClass.Empty request) {
+        return stub.getOpticalConfig(request);
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigId> setOpticalConfig(context.ContextOuterClass.OpticalConfig request) {
+        return stub.setOpticalConfig(request);
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfig> selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) {
+        return stub.selectOpticalConfig(request);
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> setOpticalLink(context.ContextOuterClass.OpticalLink request) {
+        return stub.setOpticalLink(request);
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalLink> getOpticalLink(context.ContextOuterClass.OpticalLinkId request) {
+        return stub.getOpticalLink(request);
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Fiber> getFiber(context.ContextOuterClass.FiberId request) {
+        return stub.getFiber(request);
+    }
+
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request) {
         return stub.getContextEvents(request);
diff --git a/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java b/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java
index defb37810c2d84b4ba40fcc85e1e77def272d50d..a03f7e9491a695b715ef6bcadcf82150bdc3a231 100644
--- a/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/context/ContextServiceGrpc.java
@@ -4,8 +4,7 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: context.proto")
-@io.grpc.stub.annotations.GrpcGenerated
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: context.proto")
 public final class ContextServiceGrpc {
 
     private ContextServiceGrpc() {
@@ -749,6 +748,96 @@ public final class ContextServiceGrpc {
         return getGetConnectionEventsMethod;
     }
 
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.OpticalConfigList> getGetOpticalConfigMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetOpticalConfig", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.OpticalConfigList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.OpticalConfigList> getGetOpticalConfigMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.OpticalConfigList> getGetOpticalConfigMethod;
+        if ((getGetOpticalConfigMethod = ContextServiceGrpc.getGetOpticalConfigMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetOpticalConfigMethod = ContextServiceGrpc.getGetOpticalConfigMethod) == null) {
+                    ContextServiceGrpc.getGetOpticalConfigMethod = getGetOpticalConfigMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.OpticalConfigList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetOpticalConfig")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfigList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetOpticalConfig")).build();
+                }
+            }
+        }
+        return getGetOpticalConfigMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfigId> getSetOpticalConfigMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetOpticalConfig", requestType = context.ContextOuterClass.OpticalConfig.class, responseType = context.ContextOuterClass.OpticalConfigId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfigId> getSetOpticalConfigMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfigId> getSetOpticalConfigMethod;
+        if ((getSetOpticalConfigMethod = ContextServiceGrpc.getSetOpticalConfigMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSetOpticalConfigMethod = ContextServiceGrpc.getSetOpticalConfigMethod) == null) {
+                    ContextServiceGrpc.getSetOpticalConfigMethod = getSetOpticalConfigMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfigId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetOpticalConfig")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfig.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfigId.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetOpticalConfig")).build();
+                }
+            }
+        }
+        return getSetOpticalConfigMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfig> getSelectOpticalConfigMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SelectOpticalConfig", requestType = context.ContextOuterClass.OpticalConfigId.class, responseType = context.ContextOuterClass.OpticalConfig.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfig> getSelectOpticalConfigMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfig> getSelectOpticalConfigMethod;
+        if ((getSelectOpticalConfigMethod = ContextServiceGrpc.getSelectOpticalConfigMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSelectOpticalConfigMethod = ContextServiceGrpc.getSelectOpticalConfigMethod) == null) {
+                    ContextServiceGrpc.getSelectOpticalConfigMethod = getSelectOpticalConfigMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfig>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SelectOpticalConfig")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfigId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfig.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SelectOpticalConfig")).build();
+                }
+            }
+        }
+        return getSelectOpticalConfigMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.Empty> getSetOpticalLinkMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetOpticalLink", requestType = context.ContextOuterClass.OpticalLink.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.Empty> getSetOpticalLinkMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.Empty> getSetOpticalLinkMethod;
+        if ((getSetOpticalLinkMethod = ContextServiceGrpc.getSetOpticalLinkMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSetOpticalLinkMethod = ContextServiceGrpc.getSetOpticalLinkMethod) == null) {
+                    ContextServiceGrpc.getSetOpticalLinkMethod = getSetOpticalLinkMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetOpticalLink")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLink.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetOpticalLink")).build();
+                }
+            }
+        }
+        return getSetOpticalLinkMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLink> getGetOpticalLinkMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetOpticalLink", requestType = context.ContextOuterClass.OpticalLinkId.class, responseType = context.ContextOuterClass.OpticalLink.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLink> getGetOpticalLinkMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLink> getGetOpticalLinkMethod;
+        if ((getGetOpticalLinkMethod = ContextServiceGrpc.getGetOpticalLinkMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetOpticalLinkMethod = ContextServiceGrpc.getGetOpticalLinkMethod) == null) {
+                    ContextServiceGrpc.getGetOpticalLinkMethod = getGetOpticalLinkMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLink>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetOpticalLink")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLinkId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLink.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetOpticalLink")).build();
+                }
+            }
+        }
+        return getGetOpticalLinkMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.FiberId, context.ContextOuterClass.Fiber> getGetFiberMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetFiber", requestType = context.ContextOuterClass.FiberId.class, responseType = context.ContextOuterClass.Fiber.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.FiberId, context.ContextOuterClass.Fiber> getGetFiberMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.FiberId, context.ContextOuterClass.Fiber> getGetFiberMethod;
+        if ((getGetFiberMethod = ContextServiceGrpc.getGetFiberMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetFiberMethod = ContextServiceGrpc.getGetFiberMethod) == null) {
+                    ContextServiceGrpc.getGetFiberMethod = getGetFiberMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.FiberId, context.ContextOuterClass.Fiber>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetFiber")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.FiberId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Fiber.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetFiber")).build();
+                }
+            }
+        }
+        return getGetFiberMethod;
+    }
+
     /**
      * Creates a new async stub that supports all call types for the service
      */
@@ -793,316 +882,348 @@ public final class ContextServiceGrpc {
 
     /**
      */
-    public interface AsyncService {
+    public static abstract class ContextServiceImplBase implements io.grpc.BindableService {
 
         /**
          */
-        default void listContextIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextIdList> responseObserver) {
+        public void listContextIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListContextIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listContexts(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextList> responseObserver) {
+        public void listContexts(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListContextsMethod(), responseObserver);
         }
 
         /**
          */
-        default void getContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Context> responseObserver) {
+        public void getContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Context> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetContextMethod(), responseObserver);
         }
 
         /**
          */
-        default void setContext(context.ContextOuterClass.Context request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextId> responseObserver) {
+        public void setContext(context.ContextOuterClass.Context request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetContextMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveContextMethod(), responseObserver);
         }
 
         /**
          */
-        default void getContextEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextEvent> responseObserver) {
+        public void getContextEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetContextEventsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listTopologyIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyIdList> responseObserver) {
+        public void listTopologyIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListTopologyIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listTopologies(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyList> responseObserver) {
+        public void listTopologies(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListTopologiesMethod(), responseObserver);
         }
 
         /**
          */
-        default void getTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Topology> responseObserver) {
+        public void getTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Topology> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyMethod(), responseObserver);
         }
 
         /**
          */
-        default void getTopologyDetails(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails> responseObserver) {
+        public void getTopologyDetails(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyDetailsMethod(), responseObserver);
         }
 
         /**
          */
-        default void setTopology(context.ContextOuterClass.Topology request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId> responseObserver) {
+        public void setTopology(context.ContextOuterClass.Topology request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetTopologyMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveTopologyMethod(), responseObserver);
         }
 
         /**
          */
-        default void getTopologyEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyEvent> responseObserver) {
+        public void getTopologyEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyEventsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listDeviceIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceIdList> responseObserver) {
+        public void listDeviceIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListDeviceIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listDevices(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
+        public void listDevices(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListDevicesMethod(), responseObserver);
         }
 
         /**
          */
-        default void getDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Device> responseObserver) {
+        public void getDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Device> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void setDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
+        public void setDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void getDeviceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceEvent> responseObserver) {
+        public void getDeviceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDeviceEventsMethod(), responseObserver);
         }
 
         /**
          */
-        default void selectDevice(context.ContextOuterClass.DeviceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
+        public void selectDevice(context.ContextOuterClass.DeviceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void listEndPointNames(context.ContextOuterClass.EndPointIdList request, io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList> responseObserver) {
+        public void listEndPointNames(context.ContextOuterClass.EndPointIdList request, io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListEndPointNamesMethod(), responseObserver);
         }
 
         /**
          */
-        default void listLinkIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList> responseObserver) {
+        public void listLinkIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListLinkIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listLinks(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkList> responseObserver) {
+        public void listLinks(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListLinksMethod(), responseObserver);
         }
 
         /**
          */
-        default void getLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Link> responseObserver) {
+        public void getLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Link> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetLinkMethod(), responseObserver);
         }
 
         /**
          */
-        default void setLink(context.ContextOuterClass.Link request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkId> responseObserver) {
+        public void setLink(context.ContextOuterClass.Link request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetLinkMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveLinkMethod(), responseObserver);
         }
 
         /**
          */
-        default void getLinkEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkEvent> responseObserver) {
+        public void getLinkEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetLinkEventsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listServiceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceIdList> responseObserver) {
+        public void listServiceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListServiceIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listServices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
+        public void listServices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListServicesMethod(), responseObserver);
         }
 
         /**
          */
-        default void getService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Service> responseObserver) {
+        public void getService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Service> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void setService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
+        public void setService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void unsetService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
+        public void unsetService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void getServiceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceEvent> responseObserver) {
+        public void getServiceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetServiceEventsMethod(), responseObserver);
         }
 
         /**
          */
-        default void selectService(context.ContextOuterClass.ServiceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
+        public void selectService(context.ContextOuterClass.ServiceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void listSliceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList> responseObserver) {
+        public void listSliceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListSliceIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listSlices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
+        public void listSlices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListSlicesMethod(), responseObserver);
         }
 
         /**
          */
-        default void getSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Slice> responseObserver) {
+        public void getSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Slice> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSliceMethod(), responseObserver);
         }
 
         /**
          */
-        default void setSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
+        public void setSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetSliceMethod(), responseObserver);
         }
 
         /**
          */
-        default void unsetSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
+        public void unsetSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetSliceMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveSliceMethod(), responseObserver);
         }
 
         /**
          */
-        default void getSliceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceEvent> responseObserver) {
+        public void getSliceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSliceEventsMethod(), responseObserver);
         }
 
         /**
          */
-        default void selectSlice(context.ContextOuterClass.SliceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
+        public void selectSlice(context.ContextOuterClass.SliceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectSliceMethod(), responseObserver);
         }
 
         /**
          */
-        default void listConnectionIds(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList> responseObserver) {
+        public void listConnectionIds(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListConnectionIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listConnections(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionList> responseObserver) {
+        public void listConnections(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListConnectionsMethod(), responseObserver);
         }
 
         /**
          */
-        default void getConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Connection> responseObserver) {
+        public void getConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Connection> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetConnectionMethod(), responseObserver);
         }
 
         /**
          */
-        default void setConnection(context.ContextOuterClass.Connection request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionId> responseObserver) {
+        public void setConnection(context.ContextOuterClass.Connection request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetConnectionMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveConnectionMethod(), responseObserver);
         }
 
         /**
          */
-        default void getConnectionEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent> responseObserver) {
+        public void getConnectionEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetConnectionEventsMethod(), responseObserver);
         }
-    }
 
-    /**
-     * Base class for the server implementation of the service ContextService.
-     */
-    public static abstract class ContextServiceImplBase implements io.grpc.BindableService, AsyncService {
+        /**
+         * <pre>
+         * ------------------------------ Experimental -----------------------------
+         * </pre>
+         */
+        public void getOpticalConfig(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetOpticalConfigMethod(), responseObserver);
+        }
+
+        /**
+         */
+        public void setOpticalConfig(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetOpticalConfigMethod(), responseObserver);
+        }
+
+        /**
+         */
+        public void selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfig> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectOpticalConfigMethod(), responseObserver);
+        }
+
+        /**
+         */
+        public void setOpticalLink(context.ContextOuterClass.OpticalLink request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetOpticalLinkMethod(), responseObserver);
+        }
+
+        /**
+         */
+        public void getOpticalLink(context.ContextOuterClass.OpticalLinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalLink> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetOpticalLinkMethod(), responseObserver);
+        }
+
+        /**
+         */
+        public void getFiber(context.ContextOuterClass.FiberId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Fiber> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetFiberMethod(), responseObserver);
+        }
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return ContextServiceGrpc.bindService(this);
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListContextIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList>(this, METHODID_LIST_CONTEXT_IDS))).addMethod(getListContextsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList>(this, METHODID_LIST_CONTEXTS))).addMethod(getGetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context>(this, METHODID_GET_CONTEXT))).addMethod(getSetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId>(this, METHODID_SET_CONTEXT))).addMethod(getRemoveContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONTEXT))).addMethod(getGetContextEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent>(this, METHODID_GET_CONTEXT_EVENTS))).addMethod(getListTopologyIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList>(this, METHODID_LIST_TOPOLOGY_IDS))).addMethod(getListTopologiesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList>(this, METHODID_LIST_TOPOLOGIES))).addMethod(getGetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology>(this, METHODID_GET_TOPOLOGY))).addMethod(getGetTopologyDetailsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails>(this, METHODID_GET_TOPOLOGY_DETAILS))).addMethod(getSetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId>(this, METHODID_SET_TOPOLOGY))).addMethod(getRemoveTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_TOPOLOGY))).addMethod(getGetTopologyEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent>(this, METHODID_GET_TOPOLOGY_EVENTS))).addMethod(getListDeviceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList>(this, METHODID_LIST_DEVICE_IDS))).addMethod(getListDevicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList>(this, METHODID_LIST_DEVICES))).addMethod(getGetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device>(this, METHODID_GET_DEVICE))).addMethod(getSetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(this, METHODID_SET_DEVICE))).addMethod(getRemoveDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_DEVICE))).addMethod(getGetDeviceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent>(this, METHODID_GET_DEVICE_EVENTS))).addMethod(getSelectDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList>(this, METHODID_SELECT_DEVICE))).addMethod(getListEndPointNamesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList>(this, METHODID_LIST_END_POINT_NAMES))).addMethod(getListLinkIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList>(this, METHODID_LIST_LINK_IDS))).addMethod(getListLinksMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList>(this, METHODID_LIST_LINKS))).addMethod(getGetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link>(this, METHODID_GET_LINK))).addMethod(getSetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId>(this, METHODID_SET_LINK))).addMethod(getRemoveLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_LINK))).addMethod(getGetLinkEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent>(this, METHODID_GET_LINK_EVENTS))).addMethod(getListServiceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList>(this, METHODID_LIST_SERVICE_IDS))).addMethod(getListServicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList>(this, METHODID_LIST_SERVICES))).addMethod(getGetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service>(this, METHODID_GET_SERVICE))).addMethod(getSetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_SET_SERVICE))).addMethod(getUnsetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_UNSET_SERVICE))).addMethod(getRemoveServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SERVICE))).addMethod(getGetServiceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent>(this, METHODID_GET_SERVICE_EVENTS))).addMethod(getSelectServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList>(this, METHODID_SELECT_SERVICE))).addMethod(getListSliceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList>(this, METHODID_LIST_SLICE_IDS))).addMethod(getListSlicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList>(this, METHODID_LIST_SLICES))).addMethod(getGetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice>(this, METHODID_GET_SLICE))).addMethod(getSetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_SET_SLICE))).addMethod(getUnsetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_UNSET_SLICE))).addMethod(getRemoveSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SLICE))).addMethod(getGetSliceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent>(this, METHODID_GET_SLICE_EVENTS))).addMethod(getSelectSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList>(this, METHODID_SELECT_SLICE))).addMethod(getListConnectionIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList>(this, METHODID_LIST_CONNECTION_IDS))).addMethod(getListConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList>(this, METHODID_LIST_CONNECTIONS))).addMethod(getGetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection>(this, METHODID_GET_CONNECTION))).addMethod(getSetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId>(this, METHODID_SET_CONNECTION))).addMethod(getRemoveConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONNECTION))).addMethod(getGetConnectionEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent>(this, METHODID_GET_CONNECTION_EVENTS))).addMethod(getGetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.OpticalConfigList>(this, METHODID_GET_OPTICAL_CONFIG))).addMethod(getSetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfigId>(this, METHODID_SET_OPTICAL_CONFIG))).addMethod(getSelectOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfig>(this, METHODID_SELECT_OPTICAL_CONFIG))).addMethod(getSetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.Empty>(this, METHODID_SET_OPTICAL_LINK))).addMethod(getGetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLink>(this, METHODID_GET_OPTICAL_LINK))).addMethod(getGetFiberMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.FiberId, context.ContextOuterClass.Fiber>(this, METHODID_GET_FIBER))).build();
         }
     }
 
     /**
-     * A stub to allow clients to do asynchronous rpc calls to service ContextService.
      */
     public static class ContextServiceStub extends io.grpc.stub.AbstractAsyncStub<ContextServiceStub> {
 
@@ -1408,10 +1529,48 @@ public final class ContextServiceGrpc {
         public void getConnectionEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent> responseObserver) {
             io.grpc.stub.ClientCalls.asyncServerStreamingCall(getChannel().newCall(getGetConnectionEventsMethod(), getCallOptions()), request, responseObserver);
         }
+
+        /**
+         * <pre>
+         * ------------------------------ Experimental -----------------------------
+         * </pre>
+         */
+        public void getOpticalConfig(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetOpticalConfigMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void setOpticalConfig(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetOpticalConfigMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfig> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSelectOpticalConfigMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void setOpticalLink(context.ContextOuterClass.OpticalLink request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetOpticalLinkMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void getOpticalLink(context.ContextOuterClass.OpticalLinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalLink> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetOpticalLinkMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void getFiber(context.ContextOuterClass.FiberId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Fiber> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetFiberMethod(), getCallOptions()), request, responseObserver);
+        }
     }
 
     /**
-     * A stub to allow clients to do synchronous rpc calls to service ContextService.
      */
     public static class ContextServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<ContextServiceBlockingStub> {
 
@@ -1717,10 +1876,48 @@ public final class ContextServiceGrpc {
         public java.util.Iterator<context.ContextOuterClass.ConnectionEvent> getConnectionEvents(context.ContextOuterClass.Empty request) {
             return io.grpc.stub.ClientCalls.blockingServerStreamingCall(getChannel(), getGetConnectionEventsMethod(), getCallOptions(), request);
         }
+
+        /**
+         * <pre>
+         * ------------------------------ Experimental -----------------------------
+         * </pre>
+         */
+        public context.ContextOuterClass.OpticalConfigList getOpticalConfig(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetOpticalConfigMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.OpticalConfigId setOpticalConfig(context.ContextOuterClass.OpticalConfig request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetOpticalConfigMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.OpticalConfig selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSelectOpticalConfigMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Empty setOpticalLink(context.ContextOuterClass.OpticalLink request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetOpticalLinkMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.OpticalLink getOpticalLink(context.ContextOuterClass.OpticalLinkId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetOpticalLinkMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Fiber getFiber(context.ContextOuterClass.FiberId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetFiberMethod(), getCallOptions(), request);
+        }
     }
 
     /**
-     * A stub to allow clients to do ListenableFuture-style rpc calls to service ContextService.
      */
     public static class ContextServiceFutureStub extends io.grpc.stub.AbstractFutureStub<ContextServiceFutureStub> {
 
@@ -1984,6 +2181,45 @@ public final class ContextServiceGrpc {
         public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeConnection(context.ContextOuterClass.ConnectionId request) {
             return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getRemoveConnectionMethod(), getCallOptions()), request);
         }
+
+        /**
+         * <pre>
+         * ------------------------------ Experimental -----------------------------
+         * </pre>
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.OpticalConfigList> getOpticalConfig(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetOpticalConfigMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.OpticalConfigId> setOpticalConfig(context.ContextOuterClass.OpticalConfig request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetOpticalConfigMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.OpticalConfig> selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSelectOpticalConfigMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> setOpticalLink(context.ContextOuterClass.OpticalLink request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetOpticalLinkMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.OpticalLink> getOpticalLink(context.ContextOuterClass.OpticalLinkId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetOpticalLinkMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Fiber> getFiber(context.ContextOuterClass.FiberId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetFiberMethod(), getCallOptions()), request);
+        }
     }
 
     private static final int METHODID_LIST_CONTEXT_IDS = 0;
@@ -2084,13 +2320,25 @@ public final class ContextServiceGrpc {
 
     private static final int METHODID_GET_CONNECTION_EVENTS = 48;
 
+    private static final int METHODID_GET_OPTICAL_CONFIG = 49;
+
+    private static final int METHODID_SET_OPTICAL_CONFIG = 50;
+
+    private static final int METHODID_SELECT_OPTICAL_CONFIG = 51;
+
+    private static final int METHODID_SET_OPTICAL_LINK = 52;
+
+    private static final int METHODID_GET_OPTICAL_LINK = 53;
+
+    private static final int METHODID_GET_FIBER = 54;
+
     private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
 
-        private final AsyncService serviceImpl;
+        private final ContextServiceImplBase serviceImpl;
 
         private final int methodId;
 
-        MethodHandlers(AsyncService serviceImpl, int methodId) {
+        MethodHandlers(ContextServiceImplBase serviceImpl, int methodId) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
         }
@@ -2246,6 +2494,24 @@ public final class ContextServiceGrpc {
                 case METHODID_GET_CONNECTION_EVENTS:
                     serviceImpl.getConnectionEvents((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent>) responseObserver);
                     break;
+                case METHODID_GET_OPTICAL_CONFIG:
+                    serviceImpl.getOpticalConfig((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigList>) responseObserver);
+                    break;
+                case METHODID_SET_OPTICAL_CONFIG:
+                    serviceImpl.setOpticalConfig((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigId>) responseObserver);
+                    break;
+                case METHODID_SELECT_OPTICAL_CONFIG:
+                    serviceImpl.selectOpticalConfig((context.ContextOuterClass.OpticalConfigId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfig>) responseObserver);
+                    break;
+                case METHODID_SET_OPTICAL_LINK:
+                    serviceImpl.setOpticalLink((context.ContextOuterClass.OpticalLink) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_GET_OPTICAL_LINK:
+                    serviceImpl.getOpticalLink((context.ContextOuterClass.OpticalLinkId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalLink>) responseObserver);
+                    break;
+                case METHODID_GET_FIBER:
+                    serviceImpl.getFiber((context.ContextOuterClass.FiberId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Fiber>) responseObserver);
+                    break;
                 default:
                     throw new AssertionError();
             }
@@ -2261,10 +2527,6 @@ public final class ContextServiceGrpc {
         }
     }
 
-    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
-        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListContextIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList>(service, METHODID_LIST_CONTEXT_IDS))).addMethod(getListContextsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList>(service, METHODID_LIST_CONTEXTS))).addMethod(getGetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context>(service, METHODID_GET_CONTEXT))).addMethod(getSetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId>(service, METHODID_SET_CONTEXT))).addMethod(getRemoveContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_CONTEXT))).addMethod(getGetContextEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent>(service, METHODID_GET_CONTEXT_EVENTS))).addMethod(getListTopologyIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList>(service, METHODID_LIST_TOPOLOGY_IDS))).addMethod(getListTopologiesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList>(service, METHODID_LIST_TOPOLOGIES))).addMethod(getGetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology>(service, METHODID_GET_TOPOLOGY))).addMethod(getGetTopologyDetailsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails>(service, METHODID_GET_TOPOLOGY_DETAILS))).addMethod(getSetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId>(service, METHODID_SET_TOPOLOGY))).addMethod(getRemoveTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_TOPOLOGY))).addMethod(getGetTopologyEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent>(service, METHODID_GET_TOPOLOGY_EVENTS))).addMethod(getListDeviceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList>(service, METHODID_LIST_DEVICE_IDS))).addMethod(getListDevicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList>(service, METHODID_LIST_DEVICES))).addMethod(getGetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device>(service, METHODID_GET_DEVICE))).addMethod(getSetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(service, METHODID_SET_DEVICE))).addMethod(getRemoveDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_DEVICE))).addMethod(getGetDeviceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent>(service, METHODID_GET_DEVICE_EVENTS))).addMethod(getSelectDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList>(service, METHODID_SELECT_DEVICE))).addMethod(getListEndPointNamesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList>(service, METHODID_LIST_END_POINT_NAMES))).addMethod(getListLinkIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList>(service, METHODID_LIST_LINK_IDS))).addMethod(getListLinksMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList>(service, METHODID_LIST_LINKS))).addMethod(getGetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link>(service, METHODID_GET_LINK))).addMethod(getSetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId>(service, METHODID_SET_LINK))).addMethod(getRemoveLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_LINK))).addMethod(getGetLinkEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent>(service, METHODID_GET_LINK_EVENTS))).addMethod(getListServiceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList>(service, METHODID_LIST_SERVICE_IDS))).addMethod(getListServicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList>(service, METHODID_LIST_SERVICES))).addMethod(getGetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service>(service, METHODID_GET_SERVICE))).addMethod(getSetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(service, METHODID_SET_SERVICE))).addMethod(getUnsetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(service, METHODID_UNSET_SERVICE))).addMethod(getRemoveServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_SERVICE))).addMethod(getGetServiceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent>(service, METHODID_GET_SERVICE_EVENTS))).addMethod(getSelectServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList>(service, METHODID_SELECT_SERVICE))).addMethod(getListSliceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList>(service, METHODID_LIST_SLICE_IDS))).addMethod(getListSlicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList>(service, METHODID_LIST_SLICES))).addMethod(getGetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice>(service, METHODID_GET_SLICE))).addMethod(getSetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(service, METHODID_SET_SLICE))).addMethod(getUnsetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(service, METHODID_UNSET_SLICE))).addMethod(getRemoveSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_SLICE))).addMethod(getGetSliceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent>(service, METHODID_GET_SLICE_EVENTS))).addMethod(getSelectSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList>(service, METHODID_SELECT_SLICE))).addMethod(getListConnectionIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList>(service, METHODID_LIST_CONNECTION_IDS))).addMethod(getListConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList>(service, METHODID_LIST_CONNECTIONS))).addMethod(getGetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection>(service, METHODID_GET_CONNECTION))).addMethod(getSetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId>(service, METHODID_SET_CONNECTION))).addMethod(getRemoveConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_CONNECTION))).addMethod(getGetConnectionEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent>(service, METHODID_GET_CONNECTION_EVENTS))).build();
-    }
-
     private static abstract class ContextServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
         ContextServiceBaseDescriptorSupplier() {
@@ -2309,7 +2571,7 @@ public final class ContextServiceGrpc {
             synchronized (ContextServiceGrpc.class) {
                 result = serviceDescriptor;
                 if (result == null) {
-                    serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME).setSchemaDescriptor(new ContextServiceFileDescriptorSupplier()).addMethod(getListContextIdsMethod()).addMethod(getListContextsMethod()).addMethod(getGetContextMethod()).addMethod(getSetContextMethod()).addMethod(getRemoveContextMethod()).addMethod(getGetContextEventsMethod()).addMethod(getListTopologyIdsMethod()).addMethod(getListTopologiesMethod()).addMethod(getGetTopologyMethod()).addMethod(getGetTopologyDetailsMethod()).addMethod(getSetTopologyMethod()).addMethod(getRemoveTopologyMethod()).addMethod(getGetTopologyEventsMethod()).addMethod(getListDeviceIdsMethod()).addMethod(getListDevicesMethod()).addMethod(getGetDeviceMethod()).addMethod(getSetDeviceMethod()).addMethod(getRemoveDeviceMethod()).addMethod(getGetDeviceEventsMethod()).addMethod(getSelectDeviceMethod()).addMethod(getListEndPointNamesMethod()).addMethod(getListLinkIdsMethod()).addMethod(getListLinksMethod()).addMethod(getGetLinkMethod()).addMethod(getSetLinkMethod()).addMethod(getRemoveLinkMethod()).addMethod(getGetLinkEventsMethod()).addMethod(getListServiceIdsMethod()).addMethod(getListServicesMethod()).addMethod(getGetServiceMethod()).addMethod(getSetServiceMethod()).addMethod(getUnsetServiceMethod()).addMethod(getRemoveServiceMethod()).addMethod(getGetServiceEventsMethod()).addMethod(getSelectServiceMethod()).addMethod(getListSliceIdsMethod()).addMethod(getListSlicesMethod()).addMethod(getGetSliceMethod()).addMethod(getSetSliceMethod()).addMethod(getUnsetSliceMethod()).addMethod(getRemoveSliceMethod()).addMethod(getGetSliceEventsMethod()).addMethod(getSelectSliceMethod()).addMethod(getListConnectionIdsMethod()).addMethod(getListConnectionsMethod()).addMethod(getGetConnectionMethod()).addMethod(getSetConnectionMethod()).addMethod(getRemoveConnectionMethod()).addMethod(getGetConnectionEventsMethod()).build();
+                    serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME).setSchemaDescriptor(new ContextServiceFileDescriptorSupplier()).addMethod(getListContextIdsMethod()).addMethod(getListContextsMethod()).addMethod(getGetContextMethod()).addMethod(getSetContextMethod()).addMethod(getRemoveContextMethod()).addMethod(getGetContextEventsMethod()).addMethod(getListTopologyIdsMethod()).addMethod(getListTopologiesMethod()).addMethod(getGetTopologyMethod()).addMethod(getGetTopologyDetailsMethod()).addMethod(getSetTopologyMethod()).addMethod(getRemoveTopologyMethod()).addMethod(getGetTopologyEventsMethod()).addMethod(getListDeviceIdsMethod()).addMethod(getListDevicesMethod()).addMethod(getGetDeviceMethod()).addMethod(getSetDeviceMethod()).addMethod(getRemoveDeviceMethod()).addMethod(getGetDeviceEventsMethod()).addMethod(getSelectDeviceMethod()).addMethod(getListEndPointNamesMethod()).addMethod(getListLinkIdsMethod()).addMethod(getListLinksMethod()).addMethod(getGetLinkMethod()).addMethod(getSetLinkMethod()).addMethod(getRemoveLinkMethod()).addMethod(getGetLinkEventsMethod()).addMethod(getListServiceIdsMethod()).addMethod(getListServicesMethod()).addMethod(getGetServiceMethod()).addMethod(getSetServiceMethod()).addMethod(getUnsetServiceMethod()).addMethod(getRemoveServiceMethod()).addMethod(getGetServiceEventsMethod()).addMethod(getSelectServiceMethod()).addMethod(getListSliceIdsMethod()).addMethod(getListSlicesMethod()).addMethod(getGetSliceMethod()).addMethod(getSetSliceMethod()).addMethod(getUnsetSliceMethod()).addMethod(getRemoveSliceMethod()).addMethod(getGetSliceEventsMethod()).addMethod(getSelectSliceMethod()).addMethod(getListConnectionIdsMethod()).addMethod(getListConnectionsMethod()).addMethod(getGetConnectionMethod()).addMethod(getSetConnectionMethod()).addMethod(getRemoveConnectionMethod()).addMethod(getGetConnectionEventsMethod()).addMethod(getGetOpticalConfigMethod()).addMethod(getSetOpticalConfigMethod()).addMethod(getSelectOpticalConfigMethod()).addMethod(getSetOpticalLinkMethod()).addMethod(getGetOpticalLinkMethod()).addMethod(getGetFiberMethod()).build();
                 }
             }
         }
diff --git a/src/policy/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java b/src/policy/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
index 247bf18aeacccd7e85733d56585722094b019915..c6dbb1e92554dea8ee8d25b01bf87dd2cfa32551 100644
--- a/src/policy/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
@@ -203,6 +203,35 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp
             return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::removeConnection);
         }
 
+        /**
+         * <pre>
+         *  ------------------------------ Experimental -----------------------------
+         * </pre>
+         */
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigList> getOpticalConfig(context.ContextOuterClass.Empty request) {
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getOpticalConfig);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigId> setOpticalConfig(context.ContextOuterClass.OpticalConfig request) {
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setOpticalConfig);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfig> selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) {
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::selectOpticalConfig);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> setOpticalLink(context.ContextOuterClass.OpticalLink request) {
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setOpticalLink);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalLink> getOpticalLink(context.ContextOuterClass.OpticalLinkId request) {
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getOpticalLink);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Fiber> getFiber(context.ContextOuterClass.FiberId request) {
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getFiber);
+        }
+
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request) {
             return io.quarkus.grpc.stubs.ClientCalls.oneToMany(request, delegateStub::getContextEvents);
         }
@@ -414,6 +443,35 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
+        /**
+         * <pre>
+         *  ------------------------------ Experimental -----------------------------
+         * </pre>
+         */
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigList> getOpticalConfig(context.ContextOuterClass.Empty request) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigId> setOpticalConfig(context.ContextOuterClass.OpticalConfig request) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfig> selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> setOpticalLink(context.ContextOuterClass.OpticalLink request) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalLink> getOpticalLink(context.ContextOuterClass.OpticalLinkId request) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Fiber> getFiber(context.ContextOuterClass.FiberId request) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
@@ -444,7 +502,7 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(context.ContextServiceGrpc.getListContextIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList>(this, METHODID_LIST_CONTEXT_IDS, compression))).addMethod(context.ContextServiceGrpc.getListContextsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList>(this, METHODID_LIST_CONTEXTS, compression))).addMethod(context.ContextServiceGrpc.getGetContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context>(this, METHODID_GET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getSetContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId>(this, METHODID_SET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getRemoveContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getGetContextEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent>(this, METHODID_GET_CONTEXT_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListTopologyIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList>(this, METHODID_LIST_TOPOLOGY_IDS, compression))).addMethod(context.ContextServiceGrpc.getListTopologiesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList>(this, METHODID_LIST_TOPOLOGIES, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology>(this, METHODID_GET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyDetailsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails>(this, METHODID_GET_TOPOLOGY_DETAILS, compression))).addMethod(context.ContextServiceGrpc.getSetTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId>(this, METHODID_SET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getRemoveTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent>(this, METHODID_GET_TOPOLOGY_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListDeviceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList>(this, METHODID_LIST_DEVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListDevicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList>(this, METHODID_LIST_DEVICES, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device>(this, METHODID_GET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getSetDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(this, METHODID_SET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent>(this, METHODID_GET_DEVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList>(this, METHODID_SELECT_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getListEndPointNamesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList>(this, METHODID_LIST_END_POINT_NAMES, compression))).addMethod(context.ContextServiceGrpc.getListLinkIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList>(this, METHODID_LIST_LINK_IDS, compression))).addMethod(context.ContextServiceGrpc.getListLinksMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList>(this, METHODID_LIST_LINKS, compression))).addMethod(context.ContextServiceGrpc.getGetLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link>(this, METHODID_GET_LINK, compression))).addMethod(context.ContextServiceGrpc.getSetLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId>(this, METHODID_SET_LINK, compression))).addMethod(context.ContextServiceGrpc.getRemoveLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetLinkEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent>(this, METHODID_GET_LINK_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListServiceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList>(this, METHODID_LIST_SERVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListServicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList>(this, METHODID_LIST_SERVICES, compression))).addMethod(context.ContextServiceGrpc.getGetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service>(this, METHODID_GET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getSetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_SET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_UNSET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getGetServiceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent>(this, METHODID_GET_SERVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList>(this, METHODID_SELECT_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getListSliceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList>(this, METHODID_LIST_SLICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListSlicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList>(this, METHODID_LIST_SLICES, compression))).addMethod(context.ContextServiceGrpc.getGetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice>(this, METHODID_GET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getSetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_SET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_UNSET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SLICE, compression))).addMethod(context.ContextServiceGrpc.getGetSliceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent>(this, METHODID_GET_SLICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList>(this, METHODID_SELECT_SLICE, compression))).addMethod(context.ContextServiceGrpc.getListConnectionIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList>(this, METHODID_LIST_CONNECTION_IDS, compression))).addMethod(context.ContextServiceGrpc.getListConnectionsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList>(this, METHODID_LIST_CONNECTIONS, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection>(this, METHODID_GET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getSetConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId>(this, METHODID_SET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getRemoveConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent>(this, METHODID_GET_CONNECTION_EVENTS, compression))).build();
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(context.ContextServiceGrpc.getListContextIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList>(this, METHODID_LIST_CONTEXT_IDS, compression))).addMethod(context.ContextServiceGrpc.getListContextsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList>(this, METHODID_LIST_CONTEXTS, compression))).addMethod(context.ContextServiceGrpc.getGetContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context>(this, METHODID_GET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getSetContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId>(this, METHODID_SET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getRemoveContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getGetContextEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent>(this, METHODID_GET_CONTEXT_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListTopologyIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList>(this, METHODID_LIST_TOPOLOGY_IDS, compression))).addMethod(context.ContextServiceGrpc.getListTopologiesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList>(this, METHODID_LIST_TOPOLOGIES, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology>(this, METHODID_GET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyDetailsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails>(this, METHODID_GET_TOPOLOGY_DETAILS, compression))).addMethod(context.ContextServiceGrpc.getSetTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId>(this, METHODID_SET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getRemoveTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent>(this, METHODID_GET_TOPOLOGY_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListDeviceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList>(this, METHODID_LIST_DEVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListDevicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList>(this, METHODID_LIST_DEVICES, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device>(this, METHODID_GET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getSetDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(this, METHODID_SET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent>(this, METHODID_GET_DEVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList>(this, METHODID_SELECT_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getListEndPointNamesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList>(this, METHODID_LIST_END_POINT_NAMES, compression))).addMethod(context.ContextServiceGrpc.getListLinkIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList>(this, METHODID_LIST_LINK_IDS, compression))).addMethod(context.ContextServiceGrpc.getListLinksMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList>(this, METHODID_LIST_LINKS, compression))).addMethod(context.ContextServiceGrpc.getGetLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link>(this, METHODID_GET_LINK, compression))).addMethod(context.ContextServiceGrpc.getSetLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId>(this, METHODID_SET_LINK, compression))).addMethod(context.ContextServiceGrpc.getRemoveLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetLinkEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent>(this, METHODID_GET_LINK_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListServiceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList>(this, METHODID_LIST_SERVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListServicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList>(this, METHODID_LIST_SERVICES, compression))).addMethod(context.ContextServiceGrpc.getGetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service>(this, METHODID_GET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getSetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_SET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_UNSET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getGetServiceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent>(this, METHODID_GET_SERVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList>(this, METHODID_SELECT_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getListSliceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList>(this, METHODID_LIST_SLICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListSlicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList>(this, METHODID_LIST_SLICES, compression))).addMethod(context.ContextServiceGrpc.getGetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice>(this, METHODID_GET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getSetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_SET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_UNSET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SLICE, compression))).addMethod(context.ContextServiceGrpc.getGetSliceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent>(this, METHODID_GET_SLICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList>(this, METHODID_SELECT_SLICE, compression))).addMethod(context.ContextServiceGrpc.getListConnectionIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList>(this, METHODID_LIST_CONNECTION_IDS, compression))).addMethod(context.ContextServiceGrpc.getListConnectionsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList>(this, METHODID_LIST_CONNECTIONS, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection>(this, METHODID_GET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getSetConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId>(this, METHODID_SET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getRemoveConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent>(this, METHODID_GET_CONNECTION_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.OpticalConfigList>(this, METHODID_GET_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSetOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfigId>(this, METHODID_SET_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSelectOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfig>(this, METHODID_SELECT_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSetOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.Empty>(this, METHODID_SET_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLink>(this, METHODID_GET_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetFiberMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.FiberId, context.ContextOuterClass.Fiber>(this, METHODID_GET_FIBER, compression))).build();
         }
     }
 
@@ -546,6 +604,18 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp
 
     private static final int METHODID_GET_CONNECTION_EVENTS = 48;
 
+    private static final int METHODID_GET_OPTICAL_CONFIG = 49;
+
+    private static final int METHODID_SET_OPTICAL_CONFIG = 50;
+
+    private static final int METHODID_SELECT_OPTICAL_CONFIG = 51;
+
+    private static final int METHODID_SET_OPTICAL_LINK = 52;
+
+    private static final int METHODID_GET_OPTICAL_LINK = 53;
+
+    private static final int METHODID_GET_FIBER = 54;
+
     private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
 
         private final ContextServiceImplBase serviceImpl;
@@ -711,6 +781,24 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp
                 case METHODID_GET_CONNECTION_EVENTS:
                     io.quarkus.grpc.stubs.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent>) responseObserver, compression, serviceImpl::getConnectionEvents);
                     break;
+                case METHODID_GET_OPTICAL_CONFIG:
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigList>) responseObserver, compression, serviceImpl::getOpticalConfig);
+                    break;
+                case METHODID_SET_OPTICAL_CONFIG:
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigId>) responseObserver, compression, serviceImpl::setOpticalConfig);
+                    break;
+                case METHODID_SELECT_OPTICAL_CONFIG:
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfigId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfig>) responseObserver, compression, serviceImpl::selectOpticalConfig);
+                    break;
+                case METHODID_SET_OPTICAL_LINK:
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalLink) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::setOpticalLink);
+                    break;
+                case METHODID_GET_OPTICAL_LINK:
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalLinkId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalLink>) responseObserver, compression, serviceImpl::getOpticalLink);
+                    break;
+                case METHODID_GET_FIBER:
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.FiberId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Fiber>) responseObserver, compression, serviceImpl::getFiber);
+                    break;
                 default:
                     throw new java.lang.AssertionError();
             }
diff --git a/src/policy/target/generated-sources/grpc/context_policy/ContextPolicyServiceGrpc.java b/src/policy/target/generated-sources/grpc/context_policy/ContextPolicyServiceGrpc.java
index 721493b1e76ee46e66bccf1b193eb1f192247d1c..f7123f88ff428fc2d67fc631e10d563dc9b224f8 100644
--- a/src/policy/target/generated-sources/grpc/context_policy/ContextPolicyServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/context_policy/ContextPolicyServiceGrpc.java
@@ -7,8 +7,7 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
  * created as a separate service to prevent import-loops in context and policy
  * </pre>
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: context_policy.proto")
-@io.grpc.stub.annotations.GrpcGenerated
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: context_policy.proto")
 public final class ContextPolicyServiceGrpc {
 
     private ContextPolicyServiceGrpc() {
@@ -139,55 +138,45 @@ public final class ContextPolicyServiceGrpc {
      * created as a separate service to prevent import-loops in context and policy
      * </pre>
      */
-    public interface AsyncService {
+    public static abstract class ContextPolicyServiceImplBase implements io.grpc.BindableService {
 
         /**
          */
-        default void listPolicyRuleIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleIdList> responseObserver) {
+        public void listPolicyRuleIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListPolicyRuleIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listPolicyRules(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleList> responseObserver) {
+        public void listPolicyRules(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListPolicyRulesMethod(), responseObserver);
         }
 
         /**
          */
-        default void getPolicyRule(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRule> responseObserver) {
+        public void getPolicyRule(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRule> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetPolicyRuleMethod(), responseObserver);
         }
 
         /**
          */
-        default void setPolicyRule(policy.Policy.PolicyRule request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleId> responseObserver) {
+        public void setPolicyRule(policy.Policy.PolicyRule request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetPolicyRuleMethod(), responseObserver);
         }
 
         /**
          */
-        default void removePolicyRule(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removePolicyRule(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemovePolicyRuleMethod(), responseObserver);
         }
-    }
-
-    /**
-     * Base class for the server implementation of the service ContextPolicyService.
-     * <pre>
-     * created as a separate service to prevent import-loops in context and policy
-     * </pre>
-     */
-    public static abstract class ContextPolicyServiceImplBase implements io.grpc.BindableService, AsyncService {
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return ContextPolicyServiceGrpc.bindService(this);
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListPolicyRuleIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, policy.Policy.PolicyRuleIdList>(this, METHODID_LIST_POLICY_RULE_IDS))).addMethod(getListPolicyRulesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, policy.Policy.PolicyRuleList>(this, METHODID_LIST_POLICY_RULES))).addMethod(getGetPolicyRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleId, policy.Policy.PolicyRule>(this, METHODID_GET_POLICY_RULE))).addMethod(getSetPolicyRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRule, policy.Policy.PolicyRuleId>(this, METHODID_SET_POLICY_RULE))).addMethod(getRemovePolicyRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_POLICY_RULE))).build();
         }
     }
 
     /**
-     * A stub to allow clients to do asynchronous rpc calls to service ContextPolicyService.
      * <pre>
      * created as a separate service to prevent import-loops in context and policy
      * </pre>
@@ -235,7 +224,6 @@ public final class ContextPolicyServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do synchronous rpc calls to service ContextPolicyService.
      * <pre>
      * created as a separate service to prevent import-loops in context and policy
      * </pre>
@@ -283,7 +271,6 @@ public final class ContextPolicyServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do ListenableFuture-style rpc calls to service ContextPolicyService.
      * <pre>
      * created as a separate service to prevent import-loops in context and policy
      * </pre>
@@ -342,11 +329,11 @@ public final class ContextPolicyServiceGrpc {
 
     private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
 
-        private final AsyncService serviceImpl;
+        private final ContextPolicyServiceImplBase serviceImpl;
 
         private final int methodId;
 
-        MethodHandlers(AsyncService serviceImpl, int methodId) {
+        MethodHandlers(ContextPolicyServiceImplBase serviceImpl, int methodId) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
         }
@@ -385,10 +372,6 @@ public final class ContextPolicyServiceGrpc {
         }
     }
 
-    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
-        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListPolicyRuleIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, policy.Policy.PolicyRuleIdList>(service, METHODID_LIST_POLICY_RULE_IDS))).addMethod(getListPolicyRulesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, policy.Policy.PolicyRuleList>(service, METHODID_LIST_POLICY_RULES))).addMethod(getGetPolicyRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleId, policy.Policy.PolicyRule>(service, METHODID_GET_POLICY_RULE))).addMethod(getSetPolicyRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRule, policy.Policy.PolicyRuleId>(service, METHODID_SET_POLICY_RULE))).addMethod(getRemovePolicyRuleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_POLICY_RULE))).build();
-    }
-
     private static abstract class ContextPolicyServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
         ContextPolicyServiceBaseDescriptorSupplier() {
diff --git a/src/policy/target/generated-sources/grpc/device/Device.java b/src/policy/target/generated-sources/grpc/device/Device.java
index a127e8f1cc5302bba07d991b07540e91154a7973..93bd490405da36c7ee2f26121e5abd94c3ec13a5 100644
--- a/src/policy/target/generated-sources/grpc/device/Device.java
+++ b/src/policy/target/generated-sources/grpc/device/Device.java
@@ -86,6 +86,80 @@ public final class Device {
             return new MonitoringSettings();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private MonitoringSettings(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                monitoring.Monitoring.KpiDescriptor.Builder subBuilder = null;
+                                if (kpiDescriptor_ != null) {
+                                    subBuilder = kpiDescriptor_.toBuilder();
+                                }
+                                kpiDescriptor_ = input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiDescriptor_);
+                                    kpiDescriptor_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 29:
+                            {
+                                samplingDurationS_ = input.readFloat();
+                                break;
+                            }
+                        case 37:
+                            {
+                                samplingIntervalS_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return device.Device.internal_static_device_MonitoringSettings_descriptor;
         }
@@ -122,7 +196,7 @@ public final class Device {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int KPI_DESCRIPTOR_FIELD_NUMBER = 2;
@@ -152,12 +226,12 @@ public final class Device {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder() {
-            return kpiDescriptor_ == null ? monitoring.Monitoring.KpiDescriptor.getDefaultInstance() : kpiDescriptor_;
+            return getKpiDescriptor();
         }
 
         public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 3;
 
-        private float samplingDurationS_ = 0F;
+        private float samplingDurationS_;
 
         /**
          * <code>float sampling_duration_s = 3;</code>
@@ -170,7 +244,7 @@ public final class Device {
 
         public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 4;
 
-        private float samplingIntervalS_ = 0F;
+        private float samplingIntervalS_;
 
         /**
          * <code>float sampling_interval_s = 4;</code>
@@ -202,13 +276,13 @@ public final class Device {
             if (kpiDescriptor_ != null) {
                 output.writeMessage(2, getKpiDescriptor());
             }
-            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
+            if (samplingDurationS_ != 0F) {
                 output.writeFloat(3, samplingDurationS_);
             }
-            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
+            if (samplingIntervalS_ != 0F) {
                 output.writeFloat(4, samplingIntervalS_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -223,13 +297,13 @@ public final class Device {
             if (kpiDescriptor_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiDescriptor());
             }
-            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
+            if (samplingDurationS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingDurationS_);
             }
-            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
+            if (samplingIntervalS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(4, samplingIntervalS_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -259,7 +333,7 @@ public final class Device {
                 return false;
             if (java.lang.Float.floatToIntBits(getSamplingIntervalS()) != java.lang.Float.floatToIntBits(other.getSamplingIntervalS()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -283,7 +357,7 @@ public final class Device {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingDurationS());
             hash = (37 * hash) + SAMPLING_INTERVAL_S_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingIntervalS());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -377,24 +451,32 @@ public final class Device {
 
             // Construct using device.Device.MonitoringSettings.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                kpiDescriptor_ = null;
-                if (kpiDescriptorBuilder_ != null) {
-                    kpiDescriptorBuilder_.dispose();
+                if (kpiDescriptorBuilder_ == null) {
+                    kpiDescriptor_ = null;
+                } else {
+                    kpiDescriptor_ = null;
                     kpiDescriptorBuilder_ = null;
                 }
                 samplingDurationS_ = 0F;
@@ -424,27 +506,50 @@ public final class Device {
             @java.lang.Override
             public device.Device.MonitoringSettings buildPartial() {
                 device.Device.MonitoringSettings result = new device.Device.MonitoringSettings(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
+                }
+                if (kpiDescriptorBuilder_ == null) {
+                    result.kpiDescriptor_ = kpiDescriptor_;
+                } else {
+                    result.kpiDescriptor_ = kpiDescriptorBuilder_.build();
                 }
+                result.samplingDurationS_ = samplingDurationS_;
+                result.samplingIntervalS_ = samplingIntervalS_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(device.Device.MonitoringSettings result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.kpiDescriptor_ = kpiDescriptorBuilder_ == null ? kpiDescriptor_ : kpiDescriptorBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.samplingDurationS_ = samplingDurationS_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.samplingIntervalS_ = samplingIntervalS_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -472,7 +577,7 @@ public final class Device {
                 if (other.getSamplingIntervalS() != 0F) {
                     setSamplingIntervalS(other.getSamplingIntervalS());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -484,68 +589,20 @@ public final class Device {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                device.Device.MonitoringSettings parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getKpiDescriptorFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 29:
-                                {
-                                    samplingDurationS_ = input.readFloat();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 29
-                            case 37:
-                                {
-                                    samplingIntervalS_ = input.readFloat();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 37
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (device.Device.MonitoringSettings) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.KpiId kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
@@ -555,7 +612,7 @@ public final class Device {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -579,11 +636,10 @@ public final class Device {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -593,11 +649,10 @@ public final class Device {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -606,16 +661,15 @@ public final class Device {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -623,13 +677,13 @@ public final class Device {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -637,7 +691,6 @@ public final class Device {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -673,7 +726,7 @@ public final class Device {
              * @return Whether the kpiDescriptor field is set.
              */
             public boolean hasKpiDescriptor() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return kpiDescriptorBuilder_ != null || kpiDescriptor_ != null;
             }
 
             /**
@@ -697,11 +750,10 @@ public final class Device {
                         throw new NullPointerException();
                     }
                     kpiDescriptor_ = value;
+                    onChanged();
                 } else {
                     kpiDescriptorBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -711,11 +763,10 @@ public final class Device {
             public Builder setKpiDescriptor(monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
                 if (kpiDescriptorBuilder_ == null) {
                     kpiDescriptor_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiDescriptorBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -724,16 +775,15 @@ public final class Device {
              */
             public Builder mergeKpiDescriptor(monitoring.Monitoring.KpiDescriptor value) {
                 if (kpiDescriptorBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && kpiDescriptor_ != null && kpiDescriptor_ != monitoring.Monitoring.KpiDescriptor.getDefaultInstance()) {
-                        getKpiDescriptorBuilder().mergeFrom(value);
+                    if (kpiDescriptor_ != null) {
+                        kpiDescriptor_ = monitoring.Monitoring.KpiDescriptor.newBuilder(kpiDescriptor_).mergeFrom(value).buildPartial();
                     } else {
                         kpiDescriptor_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiDescriptorBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -741,13 +791,13 @@ public final class Device {
              * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
              */
             public Builder clearKpiDescriptor() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                kpiDescriptor_ = null;
-                if (kpiDescriptorBuilder_ != null) {
-                    kpiDescriptorBuilder_.dispose();
+                if (kpiDescriptorBuilder_ == null) {
+                    kpiDescriptor_ = null;
+                    onChanged();
+                } else {
+                    kpiDescriptor_ = null;
                     kpiDescriptorBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -755,7 +805,6 @@ public final class Device {
              * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
              */
             public monitoring.Monitoring.KpiDescriptor.Builder getKpiDescriptorBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiDescriptorFieldBuilder().getBuilder();
             }
@@ -800,7 +849,6 @@ public final class Device {
              */
             public Builder setSamplingDurationS(float value) {
                 samplingDurationS_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -810,7 +858,6 @@ public final class Device {
              * @return This builder for chaining.
              */
             public Builder clearSamplingDurationS() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 samplingDurationS_ = 0F;
                 onChanged();
                 return this;
@@ -834,7 +881,6 @@ public final class Device {
              */
             public Builder setSamplingIntervalS(float value) {
                 samplingIntervalS_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -844,7 +890,6 @@ public final class Device {
              * @return This builder for chaining.
              */
             public Builder clearSamplingIntervalS() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 samplingIntervalS_ = 0F;
                 onChanged();
                 return this;
@@ -877,17 +922,7 @@ public final class Device {
 
             @java.lang.Override
             public MonitoringSettings parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new MonitoringSettings(input, extensionRegistry);
             }
         };
 
diff --git a/src/policy/target/generated-sources/grpc/device/DeviceServiceGrpc.java b/src/policy/target/generated-sources/grpc/device/DeviceServiceGrpc.java
index 7e0cf9a8bb4cc207f65ce27177f7307567a19f04..a6886d8d620182790146164fbfef36762cf4368b 100644
--- a/src/policy/target/generated-sources/grpc/device/DeviceServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/device/DeviceServiceGrpc.java
@@ -4,8 +4,7 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: device.proto")
-@io.grpc.stub.annotations.GrpcGenerated
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: device.proto")
 public final class DeviceServiceGrpc {
 
     private DeviceServiceGrpc() {
@@ -133,52 +132,45 @@ public final class DeviceServiceGrpc {
 
     /**
      */
-    public interface AsyncService {
+    public static abstract class DeviceServiceImplBase implements io.grpc.BindableService {
 
         /**
          */
-        default void addDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
+        public void addDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getAddDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void configureDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
+        public void configureDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getConfigureDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void deleteDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void deleteDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void getInitialConfig(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceConfig> responseObserver) {
+        public void getInitialConfig(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceConfig> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInitialConfigMethod(), responseObserver);
         }
 
         /**
          */
-        default void monitorDeviceKpi(device.Device.MonitoringSettings request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void monitorDeviceKpi(device.Device.MonitoringSettings request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getMonitorDeviceKpiMethod(), responseObserver);
         }
-    }
-
-    /**
-     * Base class for the server implementation of the service DeviceService.
-     */
-    public static abstract class DeviceServiceImplBase implements io.grpc.BindableService, AsyncService {
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return DeviceServiceGrpc.bindService(this);
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getAddDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(this, METHODID_ADD_DEVICE))).addMethod(getConfigureDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(this, METHODID_CONFIGURE_DEVICE))).addMethod(getDeleteDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(this, METHODID_DELETE_DEVICE))).addMethod(getGetInitialConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceConfig>(this, METHODID_GET_INITIAL_CONFIG))).addMethod(getMonitorDeviceKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<device.Device.MonitoringSettings, context.ContextOuterClass.Empty>(this, METHODID_MONITOR_DEVICE_KPI))).build();
         }
     }
 
     /**
-     * A stub to allow clients to do asynchronous rpc calls to service DeviceService.
      */
     public static class DeviceServiceStub extends io.grpc.stub.AbstractAsyncStub<DeviceServiceStub> {
 
@@ -223,7 +215,6 @@ public final class DeviceServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do synchronous rpc calls to service DeviceService.
      */
     public static class DeviceServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<DeviceServiceBlockingStub> {
 
@@ -268,7 +259,6 @@ public final class DeviceServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do ListenableFuture-style rpc calls to service DeviceService.
      */
     public static class DeviceServiceFutureStub extends io.grpc.stub.AbstractFutureStub<DeviceServiceFutureStub> {
 
@@ -324,11 +314,11 @@ public final class DeviceServiceGrpc {
 
     private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
 
-        private final AsyncService serviceImpl;
+        private final DeviceServiceImplBase serviceImpl;
 
         private final int methodId;
 
-        MethodHandlers(AsyncService serviceImpl, int methodId) {
+        MethodHandlers(DeviceServiceImplBase serviceImpl, int methodId) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
         }
@@ -367,10 +357,6 @@ public final class DeviceServiceGrpc {
         }
     }
 
-    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
-        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getAddDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(service, METHODID_ADD_DEVICE))).addMethod(getConfigureDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(service, METHODID_CONFIGURE_DEVICE))).addMethod(getDeleteDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(service, METHODID_DELETE_DEVICE))).addMethod(getGetInitialConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceConfig>(service, METHODID_GET_INITIAL_CONFIG))).addMethod(getMonitorDeviceKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<device.Device.MonitoringSettings, context.ContextOuterClass.Empty>(service, METHODID_MONITOR_DEVICE_KPI))).build();
-    }
-
     private static abstract class DeviceServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
         DeviceServiceBaseDescriptorSupplier() {
diff --git a/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java b/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java
index 2f98ce3eb35a8ba9fda3a6d6bf4c17079c720bbe..4c80f4a06fe9c1d408fe41a05056c76612a9c61e 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java
@@ -211,6 +211,160 @@ public final class Monitoring {
             return new KpiDescriptor();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiDescriptor(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                kpiDescription_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    kpiIdList_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                kpiIdList_.add(input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 32:
+                            {
+                                int rawValue = input.readEnum();
+                                kpiSampleType_ = rawValue;
+                                break;
+                            }
+                        case 42:
+                            {
+                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+                                if (deviceId_ != null) {
+                                    subBuilder = deviceId_.toBuilder();
+                                }
+                                deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceId_);
+                                    deviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 50:
+                            {
+                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
+                                if (endpointId_ != null) {
+                                    subBuilder = endpointId_.toBuilder();
+                                }
+                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointId_);
+                                    endpointId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 58:
+                            {
+                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
+                                if (serviceId_ != null) {
+                                    subBuilder = serviceId_.toBuilder();
+                                }
+                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceId_);
+                                    serviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 66:
+                            {
+                                context.ContextOuterClass.SliceId.Builder subBuilder = null;
+                                if (sliceId_ != null) {
+                                    subBuilder = sliceId_.toBuilder();
+                                }
+                                sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceId_);
+                                    sliceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 74:
+                            {
+                                context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
+                                if (connectionId_ != null) {
+                                    subBuilder = connectionId_.toBuilder();
+                                }
+                                connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(connectionId_);
+                                    connectionId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 82:
+                            {
+                                context.ContextOuterClass.LinkId.Builder subBuilder = null;
+                                if (linkId_ != null) {
+                                    subBuilder = linkId_.toBuilder();
+                                }
+                                linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(linkId_);
+                                    linkId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_descriptor;
         }
@@ -247,13 +401,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int KPI_DESCRIPTION_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object kpiDescription_ = "";
+        private volatile java.lang.Object kpiDescription_;
 
         /**
          * <code>string kpi_description = 2;</code>
@@ -290,7 +443,6 @@ public final class Monitoring {
 
         public static final int KPI_ID_LIST_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_;
 
         /**
@@ -335,7 +487,7 @@ public final class Monitoring {
 
         public static final int KPI_SAMPLE_TYPE_FIELD_NUMBER = 4;
 
-        private int kpiSampleType_ = 0;
+        private int kpiSampleType_;
 
         /**
          * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
@@ -352,7 +504,8 @@ public final class Monitoring {
          */
         @java.lang.Override
         public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
-            kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(kpiSampleType_);
+            @SuppressWarnings("deprecation")
+            kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_);
             return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
         }
 
@@ -383,7 +536,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+            return getDeviceId();
         }
 
         public static final int ENDPOINT_ID_FIELD_NUMBER = 6;
@@ -413,7 +566,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+            return getEndpointId();
         }
 
         public static final int SERVICE_ID_FIELD_NUMBER = 7;
@@ -443,7 +596,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+            return getServiceId();
         }
 
         public static final int SLICE_ID_FIELD_NUMBER = 8;
@@ -473,7 +626,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+            return getSliceId();
         }
 
         public static final int CONNECTION_ID_FIELD_NUMBER = 9;
@@ -503,7 +656,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+            return getConnectionId();
         }
 
         public static final int LINK_ID_FIELD_NUMBER = 10;
@@ -533,7 +686,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+            return getLinkId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -554,7 +707,7 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(1, getKpiId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kpiDescription_)) {
+            if (!getKpiDescriptionBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, kpiDescription_);
             }
             for (int i = 0; i < kpiIdList_.size(); i++) {
@@ -581,7 +734,7 @@ public final class Monitoring {
             if (linkId_ != null) {
                 output.writeMessage(10, getLinkId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -593,7 +746,7 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kpiDescription_)) {
+            if (!getKpiDescriptionBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, kpiDescription_);
             }
             for (int i = 0; i < kpiIdList_.size(); i++) {
@@ -620,7 +773,7 @@ public final class Monitoring {
             if (linkId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getLinkId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -682,7 +835,7 @@ public final class Monitoring {
                 if (!getLinkId().equals(other.getLinkId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -730,7 +883,7 @@ public final class Monitoring {
                 hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -824,58 +977,71 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiDescriptor.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getKpiIdListFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
                 kpiDescription_ = "";
                 if (kpiIdListBuilder_ == null) {
                     kpiIdList_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    kpiIdList_ = null;
                     kpiIdListBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 kpiSampleType_ = 0;
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
-                sliceId_ = null;
-                if (sliceIdBuilder_ != null) {
-                    sliceIdBuilder_.dispose();
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = null;
+                } else {
+                    sliceId_ = null;
                     sliceIdBuilder_ = null;
                 }
-                connectionId_ = null;
-                if (connectionIdBuilder_ != null) {
-                    connectionIdBuilder_.dispose();
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = null;
+                } else {
+                    connectionId_ = null;
                     connectionIdBuilder_ = null;
                 }
-                linkId_ = null;
-                if (linkIdBuilder_ != null) {
-                    linkIdBuilder_.dispose();
+                if (linkIdBuilder_ == null) {
+                    linkId_ = null;
+                } else {
+                    linkId_ = null;
                     linkIdBuilder_ = null;
                 }
                 return this;
@@ -903,55 +1069,85 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiDescriptor buildPartial() {
                 monitoring.Monitoring.KpiDescriptor result = new monitoring.Monitoring.KpiDescriptor(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiDescriptor result) {
+                result.kpiDescription_ = kpiDescription_;
                 if (kpiIdListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.kpiIdList_ = kpiIdList_;
                 } else {
                     result.kpiIdList_ = kpiIdListBuilder_.build();
                 }
-            }
-
-            private void buildPartial0(monitoring.Monitoring.KpiDescriptor result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.kpiDescription_ = kpiDescription_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.kpiSampleType_ = kpiSampleType_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
+                result.kpiSampleType_ = kpiSampleType_;
+                if (deviceIdBuilder_ == null) {
+                    result.deviceId_ = deviceId_;
+                } else {
+                    result.deviceId_ = deviceIdBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                if (endpointIdBuilder_ == null) {
+                    result.endpointId_ = endpointId_;
+                } else {
+                    result.endpointId_ = endpointIdBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000040) != 0)) {
-                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
+                if (serviceIdBuilder_ == null) {
+                    result.serviceId_ = serviceId_;
+                } else {
+                    result.serviceId_ = serviceIdBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000080) != 0)) {
-                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
+                if (sliceIdBuilder_ == null) {
+                    result.sliceId_ = sliceId_;
+                } else {
+                    result.sliceId_ = sliceIdBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000100) != 0)) {
-                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
+                if (connectionIdBuilder_ == null) {
+                    result.connectionId_ = connectionId_;
+                } else {
+                    result.connectionId_ = connectionIdBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000200) != 0)) {
-                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
+                if (linkIdBuilder_ == null) {
+                    result.linkId_ = linkId_;
+                } else {
+                    result.linkId_ = linkIdBuilder_.build();
                 }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -972,14 +1168,13 @@ public final class Monitoring {
                 }
                 if (!other.getKpiDescription().isEmpty()) {
                     kpiDescription_ = other.kpiDescription_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (kpiIdListBuilder_ == null) {
                     if (!other.kpiIdList_.isEmpty()) {
                         if (kpiIdList_.isEmpty()) {
                             kpiIdList_ = other.kpiIdList_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureKpiIdListIsMutable();
                             kpiIdList_.addAll(other.kpiIdList_);
@@ -992,7 +1187,7 @@ public final class Monitoring {
                             kpiIdListBuilder_.dispose();
                             kpiIdListBuilder_ = null;
                             kpiIdList_ = other.kpiIdList_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             kpiIdListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getKpiIdListFieldBuilder() : null;
                         } else {
                             kpiIdListBuilder_.addAllMessages(other.kpiIdList_);
@@ -1020,7 +1215,7 @@ public final class Monitoring {
                 if (other.hasLinkId()) {
                     mergeLinkId(other.getLinkId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -1032,110 +1227,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiDescriptor parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    kpiDescription_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    monitoring.Monitoring.KpiId m = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-                                    if (kpiIdListBuilder_ == null) {
-                                        ensureKpiIdListIsMutable();
-                                        kpiIdList_.add(m);
-                                    } else {
-                                        kpiIdListBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 32:
-                                {
-                                    kpiSampleType_ = input.readEnum();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            case 42:
-                                {
-                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 50
-                            case 58:
-                                {
-                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000040;
-                                    break;
-                                }
-                            // case 58
-                            case 66:
-                                {
-                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000080;
-                                    break;
-                                }
-                            // case 66
-                            case 74:
-                                {
-                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000100;
-                                    break;
-                                }
-                            // case 74
-                            case 82:
-                                {
-                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000200;
-                                    break;
-                                }
-                            // case 82
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiDescriptor) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -1150,7 +1252,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -1174,11 +1276,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -1188,11 +1289,10 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -1201,16 +1301,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -1218,13 +1317,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -1232,7 +1331,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -1302,7 +1400,6 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 kpiDescription_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1313,7 +1410,6 @@ public final class Monitoring {
              */
             public Builder clearKpiDescription() {
                 kpiDescription_ = getDefaultInstance().getKpiDescription();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -1329,7 +1425,6 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 kpiDescription_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1337,9 +1432,9 @@ public final class Monitoring {
             private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_ = java.util.Collections.emptyList();
 
             private void ensureKpiIdListIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     kpiIdList_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>(kpiIdList_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -1491,7 +1586,7 @@ public final class Monitoring {
             public Builder clearKpiIdList() {
                 if (kpiIdListBuilder_ == null) {
                     kpiIdList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     kpiIdListBuilder_.clear();
@@ -1565,7 +1660,7 @@ public final class Monitoring {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> getKpiIdListFieldBuilder() {
                 if (kpiIdListBuilder_ == null) {
-                    kpiIdListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(kpiIdList_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    kpiIdListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(kpiIdList_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     kpiIdList_ = null;
                 }
                 return kpiIdListBuilder_;
@@ -1589,7 +1684,6 @@ public final class Monitoring {
              */
             public Builder setKpiSampleTypeValue(int value) {
                 kpiSampleType_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -1600,7 +1694,8 @@ public final class Monitoring {
              */
             @java.lang.Override
             public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
-                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(kpiSampleType_);
+                @SuppressWarnings("deprecation")
+                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_);
                 return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
             }
 
@@ -1613,7 +1708,6 @@ public final class Monitoring {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000008;
                 kpiSampleType_ = value.getNumber();
                 onChanged();
                 return this;
@@ -1624,7 +1718,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearKpiSampleType() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 kpiSampleType_ = 0;
                 onChanged();
                 return this;
@@ -1639,7 +1732,7 @@ public final class Monitoring {
              * @return Whether the deviceId field is set.
              */
             public boolean hasDeviceId() {
-                return ((bitField0_ & 0x00000010) != 0);
+                return deviceIdBuilder_ != null || deviceId_ != null;
             }
 
             /**
@@ -1663,11 +1756,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     deviceId_ = value;
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -1677,11 +1769,10 @@ public final class Monitoring {
             public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (deviceIdBuilder_ == null) {
                     deviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -1690,16 +1781,15 @@ public final class Monitoring {
              */
             public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                 if (deviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
-                        getDeviceIdBuilder().mergeFrom(value);
+                    if (deviceId_ != null) {
+                        deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
                     } else {
                         deviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -1707,13 +1797,13 @@ public final class Monitoring {
              * <code>.context.DeviceId device_id = 5;</code>
              */
             public Builder clearDeviceId() {
-                bitField0_ = (bitField0_ & ~0x00000010);
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                    onChanged();
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -1721,7 +1811,6 @@ public final class Monitoring {
              * <code>.context.DeviceId device_id = 5;</code>
              */
             public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return getDeviceIdFieldBuilder().getBuilder();
             }
@@ -1757,7 +1846,7 @@ public final class Monitoring {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return ((bitField0_ & 0x00000020) != 0);
+                return endpointIdBuilder_ != null || endpointId_ != null;
             }
 
             /**
@@ -1781,11 +1870,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -1795,11 +1883,10 @@ public final class Monitoring {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -1808,16 +1895,15 @@ public final class Monitoring {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000020) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
-                        getEndpointIdBuilder().mergeFrom(value);
+                    if (endpointId_ != null) {
+                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
                     } else {
                         endpointId_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -1825,13 +1911,13 @@ public final class Monitoring {
              * <code>.context.EndPointId endpoint_id = 6;</code>
              */
             public Builder clearEndpointId() {
-                bitField0_ = (bitField0_ & ~0x00000020);
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                    onChanged();
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -1839,7 +1925,6 @@ public final class Monitoring {
              * <code>.context.EndPointId endpoint_id = 6;</code>
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -1875,7 +1960,7 @@ public final class Monitoring {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return ((bitField0_ & 0x00000040) != 0);
+                return serviceIdBuilder_ != null || serviceId_ != null;
             }
 
             /**
@@ -1899,11 +1984,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -1913,11 +1997,10 @@ public final class Monitoring {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -1926,16 +2009,15 @@ public final class Monitoring {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000040) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
-                        getServiceIdBuilder().mergeFrom(value);
+                    if (serviceId_ != null) {
+                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
                     } else {
                         serviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -1943,13 +2025,13 @@ public final class Monitoring {
              * <code>.context.ServiceId service_id = 7;</code>
              */
             public Builder clearServiceId() {
-                bitField0_ = (bitField0_ & ~0x00000040);
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                    onChanged();
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -1957,7 +2039,6 @@ public final class Monitoring {
              * <code>.context.ServiceId service_id = 7;</code>
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-                bitField0_ |= 0x00000040;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -1993,7 +2074,7 @@ public final class Monitoring {
              * @return Whether the sliceId field is set.
              */
             public boolean hasSliceId() {
-                return ((bitField0_ & 0x00000080) != 0);
+                return sliceIdBuilder_ != null || sliceId_ != null;
             }
 
             /**
@@ -2017,11 +2098,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     sliceId_ = value;
+                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -2031,11 +2111,10 @@ public final class Monitoring {
             public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
                 if (sliceIdBuilder_ == null) {
                     sliceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -2044,16 +2123,15 @@ public final class Monitoring {
              */
             public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
                 if (sliceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000080) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
-                        getSliceIdBuilder().mergeFrom(value);
+                    if (sliceId_ != null) {
+                        sliceId_ = context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
                     } else {
                         sliceId_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -2061,13 +2139,13 @@ public final class Monitoring {
              * <code>.context.SliceId slice_id = 8;</code>
              */
             public Builder clearSliceId() {
-                bitField0_ = (bitField0_ & ~0x00000080);
-                sliceId_ = null;
-                if (sliceIdBuilder_ != null) {
-                    sliceIdBuilder_.dispose();
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = null;
+                    onChanged();
+                } else {
+                    sliceId_ = null;
                     sliceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2075,7 +2153,6 @@ public final class Monitoring {
              * <code>.context.SliceId slice_id = 8;</code>
              */
             public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
-                bitField0_ |= 0x00000080;
                 onChanged();
                 return getSliceIdFieldBuilder().getBuilder();
             }
@@ -2111,7 +2188,7 @@ public final class Monitoring {
              * @return Whether the connectionId field is set.
              */
             public boolean hasConnectionId() {
-                return ((bitField0_ & 0x00000100) != 0);
+                return connectionIdBuilder_ != null || connectionId_ != null;
             }
 
             /**
@@ -2135,11 +2212,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     connectionId_ = value;
+                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -2149,11 +2225,10 @@ public final class Monitoring {
             public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                 if (connectionIdBuilder_ == null) {
                     connectionId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -2162,16 +2237,15 @@ public final class Monitoring {
              */
             public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
                 if (connectionIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000100) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
-                        getConnectionIdBuilder().mergeFrom(value);
+                    if (connectionId_ != null) {
+                        connectionId_ = context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
                     } else {
                         connectionId_ = value;
                     }
+                    onChanged();
                 } else {
                     connectionIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -2179,13 +2253,13 @@ public final class Monitoring {
              * <code>.context.ConnectionId connection_id = 9;</code>
              */
             public Builder clearConnectionId() {
-                bitField0_ = (bitField0_ & ~0x00000100);
-                connectionId_ = null;
-                if (connectionIdBuilder_ != null) {
-                    connectionIdBuilder_.dispose();
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = null;
+                    onChanged();
+                } else {
+                    connectionId_ = null;
                     connectionIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2193,7 +2267,6 @@ public final class Monitoring {
              * <code>.context.ConnectionId connection_id = 9;</code>
              */
             public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
-                bitField0_ |= 0x00000100;
                 onChanged();
                 return getConnectionIdFieldBuilder().getBuilder();
             }
@@ -2229,7 +2302,7 @@ public final class Monitoring {
              * @return Whether the linkId field is set.
              */
             public boolean hasLinkId() {
-                return ((bitField0_ & 0x00000200) != 0);
+                return linkIdBuilder_ != null || linkId_ != null;
             }
 
             /**
@@ -2253,11 +2326,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     linkId_ = value;
+                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000200;
-                onChanged();
                 return this;
             }
 
@@ -2267,11 +2339,10 @@ public final class Monitoring {
             public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
                 if (linkIdBuilder_ == null) {
                     linkId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000200;
-                onChanged();
                 return this;
             }
 
@@ -2280,16 +2351,15 @@ public final class Monitoring {
              */
             public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
                 if (linkIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000200) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
-                        getLinkIdBuilder().mergeFrom(value);
+                    if (linkId_ != null) {
+                        linkId_ = context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
                     } else {
                         linkId_ = value;
                     }
+                    onChanged();
                 } else {
                     linkIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000200;
-                onChanged();
                 return this;
             }
 
@@ -2297,13 +2367,13 @@ public final class Monitoring {
              * <code>.context.LinkId link_id = 10;</code>
              */
             public Builder clearLinkId() {
-                bitField0_ = (bitField0_ & ~0x00000200);
-                linkId_ = null;
-                if (linkIdBuilder_ != null) {
-                    linkIdBuilder_.dispose();
+                if (linkIdBuilder_ == null) {
+                    linkId_ = null;
+                    onChanged();
+                } else {
+                    linkId_ = null;
                     linkIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2311,7 +2381,6 @@ public final class Monitoring {
              * <code>.context.LinkId link_id = 10;</code>
              */
             public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
-                bitField0_ |= 0x00000200;
                 onChanged();
                 return getLinkIdFieldBuilder().getBuilder();
             }
@@ -2365,17 +2434,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiDescriptor parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiDescriptor(input, extensionRegistry);
             }
         };
 
@@ -2453,17 +2512,78 @@ public final class Monitoring {
             return new MonitorKpiRequest();
         }
 
-        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
-            return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
-        }
-
         @java.lang.Override
-        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
-            return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class);
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
         }
 
-        public static final int KPI_ID_FIELD_NUMBER = 1;
-
+        private MonitorKpiRequest(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 21:
+                            {
+                                monitoringWindowS_ = input.readFloat();
+                                break;
+                            }
+                        case 29:
+                            {
+                                samplingRateS_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class);
+        }
+
+        public static final int KPI_ID_FIELD_NUMBER = 1;
+
         private monitoring.Monitoring.KpiId kpiId_;
 
         /**
@@ -2489,12 +2609,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
 
-        private float monitoringWindowS_ = 0F;
+        private float monitoringWindowS_;
 
         /**
          * <code>float monitoring_window_s = 2;</code>
@@ -2507,7 +2627,7 @@ public final class Monitoring {
 
         public static final int SAMPLING_RATE_S_FIELD_NUMBER = 3;
 
-        private float samplingRateS_ = 0F;
+        private float samplingRateS_;
 
         /**
          * <pre>
@@ -2540,13 +2660,13 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(1, getKpiId());
             }
-            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
+            if (monitoringWindowS_ != 0F) {
                 output.writeFloat(2, monitoringWindowS_);
             }
-            if (java.lang.Float.floatToRawIntBits(samplingRateS_) != 0) {
+            if (samplingRateS_ != 0F) {
                 output.writeFloat(3, samplingRateS_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -2558,13 +2678,13 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
             }
-            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
+            if (monitoringWindowS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, monitoringWindowS_);
             }
-            if (java.lang.Float.floatToRawIntBits(samplingRateS_) != 0) {
+            if (samplingRateS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingRateS_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -2588,7 +2708,7 @@ public final class Monitoring {
                 return false;
             if (java.lang.Float.floatToIntBits(getSamplingRateS()) != java.lang.Float.floatToIntBits(other.getSamplingRateS()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -2608,7 +2728,7 @@ public final class Monitoring {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getMonitoringWindowS());
             hash = (37 * hash) + SAMPLING_RATE_S_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingRateS());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2702,19 +2822,26 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.MonitorKpiRequest.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
                 monitoringWindowS_ = 0F;
@@ -2744,24 +2871,45 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.MonitorKpiRequest buildPartial() {
                 monitoring.Monitoring.MonitorKpiRequest result = new monitoring.Monitoring.MonitorKpiRequest(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
                 }
+                result.monitoringWindowS_ = monitoringWindowS_;
+                result.samplingRateS_ = samplingRateS_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.MonitorKpiRequest result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.monitoringWindowS_ = monitoringWindowS_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.samplingRateS_ = samplingRateS_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -2786,7 +2934,7 @@ public final class Monitoring {
                 if (other.getSamplingRateS() != 0F) {
                     setSamplingRateS(other.getSamplingRateS());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -2798,61 +2946,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.MonitorKpiRequest parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 21:
-                                {
-                                    monitoringWindowS_ = input.readFloat();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 21
-                            case 29:
-                                {
-                                    samplingRateS_ = input.readFloat();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 29
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.MonitorKpiRequest) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.KpiId kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
@@ -2862,7 +2969,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -2886,11 +2993,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -2900,11 +3006,10 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -2913,16 +3018,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -2930,13 +3034,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2944,7 +3048,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -2989,7 +3092,6 @@ public final class Monitoring {
              */
             public Builder setMonitoringWindowS(float value) {
                 monitoringWindowS_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -2999,7 +3101,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearMonitoringWindowS() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 monitoringWindowS_ = 0F;
                 onChanged();
                 return this;
@@ -3031,7 +3132,6 @@ public final class Monitoring {
              */
             public Builder setSamplingRateS(float value) {
                 samplingRateS_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -3045,7 +3145,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSamplingRateS() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 samplingRateS_ = 0F;
                 onChanged();
                 return this;
@@ -3078,17 +3177,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public MonitorKpiRequest parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new MonitorKpiRequest(input, extensionRegistry);
             }
         };
 
@@ -3233,6 +3322,93 @@ public final class Monitoring {
             return new KpiQuery();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiQuery(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    kpiIds_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                kpiIds_.add(input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 21:
+                            {
+                                monitoringWindowS_ = input.readFloat();
+                                break;
+                            }
+                        case 24:
+                            {
+                                lastNSamples_ = input.readUInt32();
+                                break;
+                            }
+                        case 34:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (startTimestamp_ != null) {
+                                    subBuilder = startTimestamp_.toBuilder();
+                                }
+                                startTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(startTimestamp_);
+                                    startTimestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 42:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (endTimestamp_ != null) {
+                                    subBuilder = endTimestamp_.toBuilder();
+                                }
+                                endTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endTimestamp_);
+                                    endTimestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
         }
@@ -3244,7 +3420,6 @@ public final class Monitoring {
 
         public static final int KPI_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.KpiId> kpiIds_;
 
         /**
@@ -3289,7 +3464,7 @@ public final class Monitoring {
 
         public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
 
-        private float monitoringWindowS_ = 0F;
+        private float monitoringWindowS_;
 
         /**
          * <code>float monitoring_window_s = 2;</code>
@@ -3302,7 +3477,7 @@ public final class Monitoring {
 
         public static final int LAST_N_SAMPLES_FIELD_NUMBER = 3;
 
-        private int lastNSamples_ = 0;
+        private int lastNSamples_;
 
         /**
          * <pre>
@@ -3356,7 +3531,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
-            return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+            return getStartTimestamp();
         }
 
         public static final int END_TIMESTAMP_FIELD_NUMBER = 5;
@@ -3398,7 +3573,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
-            return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+            return getEndTimestamp();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -3419,7 +3594,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiIds_.size(); i++) {
                 output.writeMessage(1, kpiIds_.get(i));
             }
-            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
+            if (monitoringWindowS_ != 0F) {
                 output.writeFloat(2, monitoringWindowS_);
             }
             if (lastNSamples_ != 0) {
@@ -3431,7 +3606,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 output.writeMessage(5, getEndTimestamp());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -3443,7 +3618,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpiIds_.get(i));
             }
-            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
+            if (monitoringWindowS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, monitoringWindowS_);
             }
             if (lastNSamples_ != 0) {
@@ -3455,7 +3630,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getEndTimestamp());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -3487,7 +3662,7 @@ public final class Monitoring {
                 if (!getEndTimestamp().equals(other.getEndTimestamp()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -3515,7 +3690,7 @@ public final class Monitoring {
                 hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getEndTimestamp().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -3609,33 +3784,41 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiQuery.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getKpiIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (kpiIdsBuilder_ == null) {
                     kpiIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    kpiIds_ = null;
                     kpiIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 monitoringWindowS_ = 0F;
                 lastNSamples_ = 0;
-                startTimestamp_ = null;
-                if (startTimestampBuilder_ != null) {
-                    startTimestampBuilder_.dispose();
+                if (startTimestampBuilder_ == null) {
+                    startTimestamp_ = null;
+                } else {
+                    startTimestamp_ = null;
                     startTimestampBuilder_ = null;
                 }
-                endTimestamp_ = null;
-                if (endTimestampBuilder_ != null) {
-                    endTimestampBuilder_.dispose();
+                if (endTimestampBuilder_ == null) {
+                    endTimestamp_ = null;
+                } else {
+                    endTimestamp_ = null;
                     endTimestampBuilder_ = null;
                 }
                 return this;
@@ -3663,15 +3846,7 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiQuery buildPartial() {
                 monitoring.Monitoring.KpiQuery result = new monitoring.Monitoring.KpiQuery(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiQuery result) {
+                int from_bitField0_ = bitField0_;
                 if (kpiIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_);
@@ -3681,22 +3856,50 @@ public final class Monitoring {
                 } else {
                     result.kpiIds_ = kpiIdsBuilder_.build();
                 }
-            }
-
-            private void buildPartial0(monitoring.Monitoring.KpiQuery result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.monitoringWindowS_ = monitoringWindowS_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.lastNSamples_ = lastNSamples_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.startTimestamp_ = startTimestampBuilder_ == null ? startTimestamp_ : startTimestampBuilder_.build();
+                result.monitoringWindowS_ = monitoringWindowS_;
+                result.lastNSamples_ = lastNSamples_;
+                if (startTimestampBuilder_ == null) {
+                    result.startTimestamp_ = startTimestamp_;
+                } else {
+                    result.startTimestamp_ = startTimestampBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.endTimestamp_ = endTimestampBuilder_ == null ? endTimestamp_ : endTimestampBuilder_.build();
+                if (endTimestampBuilder_ == null) {
+                    result.endTimestamp_ = endTimestamp_;
+                } else {
+                    result.endTimestamp_ = endTimestampBuilder_.build();
                 }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -3748,7 +3951,7 @@ public final class Monitoring {
                 if (other.hasEndTimestamp()) {
                     mergeEndTimestamp(other.getEndTimestamp());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -3760,75 +3963,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiQuery parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    monitoring.Monitoring.KpiId m = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-                                    if (kpiIdsBuilder_ == null) {
-                                        ensureKpiIdsIsMutable();
-                                        kpiIds_.add(m);
-                                    } else {
-                                        kpiIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            case 21:
-                                {
-                                    monitoringWindowS_ = input.readFloat();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 21
-                            case 24:
-                                {
-                                    lastNSamples_ = input.readUInt32();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 34:
-                                {
-                                    input.readMessage(getStartTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    input.readMessage(getEndTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiQuery) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -4089,7 +4234,6 @@ public final class Monitoring {
              */
             public Builder setMonitoringWindowS(float value) {
                 monitoringWindowS_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -4099,7 +4243,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearMonitoringWindowS() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 monitoringWindowS_ = 0F;
                 onChanged();
                 return this;
@@ -4131,7 +4274,6 @@ public final class Monitoring {
              */
             public Builder setLastNSamples(int value) {
                 lastNSamples_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -4145,7 +4287,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearLastNSamples() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 lastNSamples_ = 0;
                 onChanged();
                 return this;
@@ -4164,7 +4305,7 @@ public final class Monitoring {
              * @return Whether the startTimestamp field is set.
              */
             public boolean hasStartTimestamp() {
-                return ((bitField0_ & 0x00000008) != 0);
+                return startTimestampBuilder_ != null || startTimestamp_ != null;
             }
 
             /**
@@ -4196,11 +4337,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     startTimestamp_ = value;
+                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -4214,11 +4354,10 @@ public final class Monitoring {
             public Builder setStartTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (startTimestampBuilder_ == null) {
                     startTimestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -4231,16 +4370,15 @@ public final class Monitoring {
              */
             public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (startTimestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0) && startTimestamp_ != null && startTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getStartTimestampBuilder().mergeFrom(value);
+                    if (startTimestamp_ != null) {
+                        startTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(startTimestamp_).mergeFrom(value).buildPartial();
                     } else {
                         startTimestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     startTimestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -4252,13 +4390,13 @@ public final class Monitoring {
              * <code>.context.Timestamp start_timestamp = 4;</code>
              */
             public Builder clearStartTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000008);
-                startTimestamp_ = null;
-                if (startTimestampBuilder_ != null) {
-                    startTimestampBuilder_.dispose();
+                if (startTimestampBuilder_ == null) {
+                    startTimestamp_ = null;
+                    onChanged();
+                } else {
+                    startTimestamp_ = null;
                     startTimestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -4270,7 +4408,6 @@ public final class Monitoring {
              * <code>.context.Timestamp start_timestamp = 4;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return getStartTimestampFieldBuilder().getBuilder();
             }
@@ -4318,7 +4455,7 @@ public final class Monitoring {
              * @return Whether the endTimestamp field is set.
              */
             public boolean hasEndTimestamp() {
-                return ((bitField0_ & 0x00000010) != 0);
+                return endTimestampBuilder_ != null || endTimestamp_ != null;
             }
 
             /**
@@ -4350,11 +4487,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     endTimestamp_ = value;
+                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -4368,11 +4504,10 @@ public final class Monitoring {
             public Builder setEndTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (endTimestampBuilder_ == null) {
                     endTimestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -4385,16 +4520,15 @@ public final class Monitoring {
              */
             public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (endTimestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0) && endTimestamp_ != null && endTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getEndTimestampBuilder().mergeFrom(value);
+                    if (endTimestamp_ != null) {
+                        endTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
                     } else {
                         endTimestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     endTimestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -4406,13 +4540,13 @@ public final class Monitoring {
              * <code>.context.Timestamp end_timestamp = 5;</code>
              */
             public Builder clearEndTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000010);
-                endTimestamp_ = null;
-                if (endTimestampBuilder_ != null) {
-                    endTimestampBuilder_.dispose();
+                if (endTimestampBuilder_ == null) {
+                    endTimestamp_ = null;
+                    onChanged();
+                } else {
+                    endTimestamp_ = null;
                     endTimestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -4424,7 +4558,6 @@ public final class Monitoring {
              * <code>.context.Timestamp end_timestamp = 5;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return getEndTimestampFieldBuilder().getBuilder();
             }
@@ -4486,17 +4619,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiQuery parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiQuery(input, extensionRegistry);
             }
         };
 
@@ -4579,6 +4702,70 @@ public final class Monitoring {
             return new RawKpi();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private RawKpi(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (timestamp_ != null) {
+                                    subBuilder = timestamp_.toBuilder();
+                                }
+                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(timestamp_);
+                                    timestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
+                                if (kpiValue_ != null) {
+                                    subBuilder = kpiValue_.toBuilder();
+                                }
+                                kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiValue_);
+                                    kpiValue_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor;
         }
@@ -4615,7 +4802,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+            return getTimestamp();
         }
 
         public static final int KPI_VALUE_FIELD_NUMBER = 2;
@@ -4645,7 +4832,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+            return getKpiValue();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -4669,7 +4856,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 output.writeMessage(2, getKpiValue());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -4684,7 +4871,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiValue());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -4710,7 +4897,7 @@ public final class Monitoring {
                 if (!getKpiValue().equals(other.getKpiValue()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -4730,7 +4917,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiValue().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -4828,24 +5015,32 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.RawKpi.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                kpiValue_ = null;
-                if (kpiValueBuilder_ != null) {
-                    kpiValueBuilder_.dispose();
+                if (kpiValueBuilder_ == null) {
+                    kpiValue_ = null;
+                } else {
+                    kpiValue_ = null;
                     kpiValueBuilder_ = null;
                 }
                 return this;
@@ -4873,43 +5068,70 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.RawKpi buildPartial() {
                 monitoring.Monitoring.RawKpi result = new monitoring.Monitoring.RawKpi(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (timestampBuilder_ == null) {
+                    result.timestamp_ = timestamp_;
+                } else {
+                    result.timestamp_ = timestampBuilder_.build();
+                }
+                if (kpiValueBuilder_ == null) {
+                    result.kpiValue_ = kpiValue_;
+                } else {
+                    result.kpiValue_ = kpiValueBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.RawKpi result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.kpiValue_ = kpiValueBuilder_ == null ? kpiValue_ : kpiValueBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
             }
 
             @java.lang.Override
-            public Builder mergeFrom(com.google.protobuf.Message other) {
-                if (other instanceof monitoring.Monitoring.RawKpi) {
-                    return mergeFrom((monitoring.Monitoring.RawKpi) other);
-                } else {
-                    super.mergeFrom(other);
-                    return this;
-                }
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
             }
 
-            public Builder mergeFrom(monitoring.Monitoring.RawKpi other) {
-                if (other == monitoring.Monitoring.RawKpi.getDefaultInstance())
-                    return this;
-                if (other.hasTimestamp()) {
-                    mergeTimestamp(other.getTimestamp());
-                }
-                if (other.hasKpiValue()) {
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.RawKpi) {
+                    return mergeFrom((monitoring.Monitoring.RawKpi) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.RawKpi other) {
+                if (other == monitoring.Monitoring.RawKpi.getDefaultInstance())
+                    return this;
+                if (other.hasTimestamp()) {
+                    mergeTimestamp(other.getTimestamp());
+                }
+                if (other.hasKpiValue()) {
                     mergeKpiValue(other.getKpiValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -4921,54 +5143,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.RawKpi parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getKpiValueFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.RawKpi) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Timestamp timestamp_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
@@ -4978,7 +5166,7 @@ public final class Monitoring {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return timestampBuilder_ != null || timestamp_ != null;
             }
 
             /**
@@ -5002,11 +5190,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5016,11 +5203,10 @@ public final class Monitoring {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5029,16 +5215,15 @@ public final class Monitoring {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getTimestampBuilder().mergeFrom(value);
+                    if (timestamp_ != null) {
+                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
                     } else {
                         timestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5046,13 +5231,13 @@ public final class Monitoring {
              * <code>.context.Timestamp timestamp = 1;</code>
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                    onChanged();
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -5060,7 +5245,6 @@ public final class Monitoring {
              * <code>.context.Timestamp timestamp = 1;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -5096,7 +5280,7 @@ public final class Monitoring {
              * @return Whether the kpiValue field is set.
              */
             public boolean hasKpiValue() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return kpiValueBuilder_ != null || kpiValue_ != null;
             }
 
             /**
@@ -5120,11 +5304,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiValue_ = value;
+                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -5134,11 +5317,10 @@ public final class Monitoring {
             public Builder setKpiValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiValueBuilder_ == null) {
                     kpiValue_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -5147,16 +5329,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiValueBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && kpiValue_ != null && kpiValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
-                        getKpiValueBuilder().mergeFrom(value);
+                    if (kpiValue_ != null) {
+                        kpiValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
                     } else {
                         kpiValue_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiValueBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -5164,13 +5345,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpi_value = 2;</code>
              */
             public Builder clearKpiValue() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                kpiValue_ = null;
-                if (kpiValueBuilder_ != null) {
-                    kpiValueBuilder_.dispose();
+                if (kpiValueBuilder_ == null) {
+                    kpiValue_ = null;
+                    onChanged();
+                } else {
+                    kpiValue_ = null;
                     kpiValueBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -5178,7 +5359,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpi_value = 2;</code>
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiValueFieldBuilder().getBuilder();
             }
@@ -5232,17 +5412,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public RawKpi parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new RawKpi(input, extensionRegistry);
             }
         };
 
@@ -5334,6 +5504,70 @@ public final class Monitoring {
             return new RawKpiList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private RawKpiList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    rawKpis_ = new java.util.ArrayList<monitoring.Monitoring.RawKpi>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                rawKpis_.add(input.readMessage(monitoring.Monitoring.RawKpi.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor;
         }
@@ -5370,12 +5604,11 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int RAW_KPIS_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.RawKpi> rawKpis_;
 
         /**
@@ -5439,7 +5672,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpis_.size(); i++) {
                 output.writeMessage(2, rawKpis_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -5454,7 +5687,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpis_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, rawKpis_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -5476,7 +5709,7 @@ public final class Monitoring {
             }
             if (!getRawKpisList().equals(other.getRawKpisList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -5496,7 +5729,7 @@ public final class Monitoring {
                 hash = (37 * hash) + RAW_KPIS_FIELD_NUMBER;
                 hash = (53 * hash) + getRawKpisList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -5594,28 +5827,35 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.RawKpiList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getRawKpisFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
                 if (rawKpisBuilder_ == null) {
                     rawKpis_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    rawKpis_ = null;
                     rawKpisBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000002);
                 return this;
             }
 
@@ -5641,31 +5881,53 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.RawKpiList buildPartial() {
                 monitoring.Monitoring.RawKpiList result = new monitoring.Monitoring.RawKpiList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.RawKpiList result) {
                 if (rawKpisBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.rawKpis_ = rawKpis_;
                 } else {
                     result.rawKpis_ = rawKpisBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.RawKpiList result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -5688,7 +5950,7 @@ public final class Monitoring {
                     if (!other.rawKpis_.isEmpty()) {
                         if (rawKpis_.isEmpty()) {
                             rawKpis_ = other.rawKpis_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureRawKpisIsMutable();
                             rawKpis_.addAll(other.rawKpis_);
@@ -5701,14 +5963,14 @@ public final class Monitoring {
                             rawKpisBuilder_.dispose();
                             rawKpisBuilder_ = null;
                             rawKpis_ = other.rawKpis_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             rawKpisBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getRawKpisFieldBuilder() : null;
                         } else {
                             rawKpisBuilder_.addAllMessages(other.rawKpis_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -5720,54 +5982,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.RawKpiList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    monitoring.Monitoring.RawKpi m = input.readMessage(monitoring.Monitoring.RawKpi.parser(), extensionRegistry);
-                                    if (rawKpisBuilder_ == null) {
-                                        ensureRawKpisIsMutable();
-                                        rawKpis_.add(m);
-                                    } else {
-                                        rawKpisBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.RawKpiList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -5782,7 +6007,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -5806,11 +6031,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5820,11 +6044,10 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5833,16 +6056,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5850,13 +6072,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -5864,7 +6086,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -5894,9 +6115,9 @@ public final class Monitoring {
             private java.util.List<monitoring.Monitoring.RawKpi> rawKpis_ = java.util.Collections.emptyList();
 
             private void ensureRawKpisIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     rawKpis_ = new java.util.ArrayList<monitoring.Monitoring.RawKpi>(rawKpis_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -6048,7 +6269,7 @@ public final class Monitoring {
             public Builder clearRawKpis() {
                 if (rawKpisBuilder_ == null) {
                     rawKpis_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     rawKpisBuilder_.clear();
@@ -6122,7 +6343,7 @@ public final class Monitoring {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder> getRawKpisFieldBuilder() {
                 if (rawKpisBuilder_ == null) {
-                    rawKpisBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder>(rawKpis_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    rawKpisBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder>(rawKpis_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     rawKpis_ = null;
                 }
                 return rawKpisBuilder_;
@@ -6155,17 +6376,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public RawKpiList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new RawKpiList(input, extensionRegistry);
             }
         };
 
@@ -6240,6 +6451,57 @@ public final class Monitoring {
             return new RawKpiTable();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private RawKpiTable(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    rawKpiLists_ = new java.util.ArrayList<monitoring.Monitoring.RawKpiList>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                rawKpiLists_.add(input.readMessage(monitoring.Monitoring.RawKpiList.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor;
         }
@@ -6251,7 +6513,6 @@ public final class Monitoring {
 
         public static final int RAW_KPI_LISTS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.RawKpiList> rawKpiLists_;
 
         /**
@@ -6312,7 +6573,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpiLists_.size(); i++) {
                 output.writeMessage(1, rawKpiLists_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -6324,7 +6585,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpiLists_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, rawKpiLists_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -6340,7 +6601,7 @@ public final class Monitoring {
             monitoring.Monitoring.RawKpiTable other = (monitoring.Monitoring.RawKpiTable) obj;
             if (!getRawKpiListsList().equals(other.getRawKpiListsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -6356,7 +6617,7 @@ public final class Monitoring {
                 hash = (37 * hash) + RAW_KPI_LISTS_FIELD_NUMBER;
                 hash = (53 * hash) + getRawKpiListsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -6454,23 +6715,29 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.RawKpiTable.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getRawKpiListsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (rawKpiListsBuilder_ == null) {
                     rawKpiLists_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    rawKpiLists_ = null;
                     rawKpiListsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -6496,15 +6763,7 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.RawKpiTable buildPartial() {
                 monitoring.Monitoring.RawKpiTable result = new monitoring.Monitoring.RawKpiTable(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.RawKpiTable result) {
+                int from_bitField0_ = bitField0_;
                 if (rawKpiListsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_);
@@ -6514,10 +6773,38 @@ public final class Monitoring {
                 } else {
                     result.rawKpiLists_ = rawKpiListsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.RawKpiTable result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -6557,7 +6844,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -6569,47 +6856,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.RawKpiTable parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    monitoring.Monitoring.RawKpiList m = input.readMessage(monitoring.Monitoring.RawKpiList.parser(), extensionRegistry);
-                                    if (rawKpiListsBuilder_ == null) {
-                                        ensureRawKpiListsIsMutable();
-                                        rawKpiLists_.add(m);
-                                    } else {
-                                        rawKpiListsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.RawKpiTable) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -6879,17 +7136,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public RawKpiTable parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new RawKpiTable(input, extensionRegistry);
             }
         };
 
@@ -6951,6 +7198,57 @@ public final class Monitoring {
             return new KpiId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
         }
@@ -6987,7 +7285,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -7008,7 +7306,7 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(1, getKpiId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -7020,7 +7318,7 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -7040,7 +7338,7 @@ public final class Monitoring {
                 if (!getKpiId().equals(other.getKpiId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -7056,7 +7354,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -7150,19 +7448,26 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
                 return this;
@@ -7190,38 +7495,63 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiId buildPartial() {
                 monitoring.Monitoring.KpiId result = new monitoring.Monitoring.KpiId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.KpiId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
             }
 
             @java.lang.Override
-            public Builder mergeFrom(com.google.protobuf.Message other) {
-                if (other instanceof monitoring.Monitoring.KpiId) {
-                    return mergeFrom((monitoring.Monitoring.KpiId) other);
-                } else {
-                    super.mergeFrom(other);
-                    return this;
-                }
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
             }
 
-            public Builder mergeFrom(monitoring.Monitoring.KpiId other) {
-                if (other == monitoring.Monitoring.KpiId.getDefaultInstance())
-                    return this;
-                if (other.hasKpiId()) {
-                    mergeKpiId(other.getKpiId());
-                }
-                this.mergeUnknownFields(other.getUnknownFields());
-                onChanged();
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.KpiId) {
+                    return mergeFrom((monitoring.Monitoring.KpiId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.KpiId other) {
+                if (other == monitoring.Monitoring.KpiId.getDefaultInstance())
+                    return this;
+                if (other.hasKpiId()) {
+                    mergeKpiId(other.getKpiId());
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
                 return this;
             }
 
@@ -7232,47 +7562,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> kpiIdBuilder_;
@@ -7282,7 +7585,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -7306,11 +7609,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -7320,11 +7622,10 @@ public final class Monitoring {
             public Builder setKpiId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -7333,16 +7634,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(context.ContextOuterClass.Uuid value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = context.ContextOuterClass.Uuid.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -7350,13 +7650,13 @@ public final class Monitoring {
              * <code>.context.Uuid kpi_id = 1;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -7364,7 +7664,6 @@ public final class Monitoring {
              * <code>.context.Uuid kpi_id = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -7418,17 +7717,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiId(input, extensionRegistry);
             }
         };
 
@@ -7524,6 +7813,83 @@ public final class Monitoring {
             return new Kpi();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Kpi(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (timestamp_ != null) {
+                                    subBuilder = timestamp_.toBuilder();
+                                }
+                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(timestamp_);
+                                    timestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 26:
+                            {
+                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
+                                if (kpiValue_ != null) {
+                                    subBuilder = kpiValue_.toBuilder();
+                                }
+                                kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiValue_);
+                                    kpiValue_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
         }
@@ -7560,7 +7926,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 2;
@@ -7590,7 +7956,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+            return getTimestamp();
         }
 
         public static final int KPI_VALUE_FIELD_NUMBER = 3;
@@ -7620,7 +7986,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+            return getKpiValue();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -7647,7 +8013,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 output.writeMessage(3, getKpiValue());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -7665,7 +8031,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKpiValue());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -7697,7 +8063,7 @@ public final class Monitoring {
                 if (!getKpiValue().equals(other.getKpiValue()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -7721,7 +8087,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiValue().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -7815,29 +8181,38 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.Kpi.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                kpiValue_ = null;
-                if (kpiValueBuilder_ != null) {
-                    kpiValueBuilder_.dispose();
+                if (kpiValueBuilder_ == null) {
+                    kpiValue_ = null;
+                } else {
+                    kpiValue_ = null;
                     kpiValueBuilder_ = null;
                 }
                 return this;
@@ -7865,24 +8240,53 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.Kpi buildPartial() {
                 monitoring.Monitoring.Kpi result = new monitoring.Monitoring.Kpi(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
+                }
+                if (timestampBuilder_ == null) {
+                    result.timestamp_ = timestamp_;
+                } else {
+                    result.timestamp_ = timestampBuilder_.build();
+                }
+                if (kpiValueBuilder_ == null) {
+                    result.kpiValue_ = kpiValue_;
+                } else {
+                    result.kpiValue_ = kpiValueBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.Kpi result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.kpiValue_ = kpiValueBuilder_ == null ? kpiValue_ : kpiValueBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -7907,7 +8311,7 @@ public final class Monitoring {
                 if (other.hasKpiValue()) {
                     mergeKpiValue(other.getKpiValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -7919,61 +8323,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.Kpi parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getKpiValueFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.Kpi) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.KpiId kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
@@ -7983,7 +8346,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -8007,11 +8370,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -8021,11 +8383,10 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -8034,16 +8395,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -8051,13 +8411,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -8065,7 +8425,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -8101,7 +8460,7 @@ public final class Monitoring {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return timestampBuilder_ != null || timestamp_ != null;
             }
 
             /**
@@ -8125,11 +8484,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -8139,11 +8497,10 @@ public final class Monitoring {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -8152,16 +8509,15 @@ public final class Monitoring {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getTimestampBuilder().mergeFrom(value);
+                    if (timestamp_ != null) {
+                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
                     } else {
                         timestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -8169,13 +8525,13 @@ public final class Monitoring {
              * <code>.context.Timestamp timestamp = 2;</code>
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                    onChanged();
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -8183,7 +8539,6 @@ public final class Monitoring {
              * <code>.context.Timestamp timestamp = 2;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -8219,7 +8574,7 @@ public final class Monitoring {
              * @return Whether the kpiValue field is set.
              */
             public boolean hasKpiValue() {
-                return ((bitField0_ & 0x00000004) != 0);
+                return kpiValueBuilder_ != null || kpiValue_ != null;
             }
 
             /**
@@ -8243,11 +8598,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiValue_ = value;
+                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -8257,11 +8611,10 @@ public final class Monitoring {
             public Builder setKpiValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiValueBuilder_ == null) {
                     kpiValue_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -8270,16 +8623,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiValueBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0) && kpiValue_ != null && kpiValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
-                        getKpiValueBuilder().mergeFrom(value);
+                    if (kpiValue_ != null) {
+                        kpiValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
                     } else {
                         kpiValue_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiValueBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -8287,13 +8639,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpi_value = 3;</code>
              */
             public Builder clearKpiValue() {
-                bitField0_ = (bitField0_ & ~0x00000004);
-                kpiValue_ = null;
-                if (kpiValueBuilder_ != null) {
-                    kpiValueBuilder_.dispose();
+                if (kpiValueBuilder_ == null) {
+                    kpiValue_ = null;
+                    onChanged();
+                } else {
+                    kpiValue_ = null;
                     kpiValueBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -8301,7 +8653,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpi_value = 3;</code>
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return getKpiValueFieldBuilder().getBuilder();
             }
@@ -8355,17 +8706,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public Kpi parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Kpi(input, extensionRegistry);
             }
         };
 
@@ -8474,6 +8815,85 @@ public final class Monitoring {
             return new KpiValueRange();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiValueRange(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
+                                if (kpiMinValue_ != null) {
+                                    subBuilder = kpiMinValue_.toBuilder();
+                                }
+                                kpiMinValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiMinValue_);
+                                    kpiMinValue_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
+                                if (kpiMaxValue_ != null) {
+                                    subBuilder = kpiMaxValue_.toBuilder();
+                                }
+                                kpiMaxValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiMaxValue_);
+                                    kpiMaxValue_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 24:
+                            {
+                                inRange_ = input.readBool();
+                                break;
+                            }
+                        case 32:
+                            {
+                                includeMinValue_ = input.readBool();
+                                break;
+                            }
+                        case 40:
+                            {
+                                includeMaxValue_ = input.readBool();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
         }
@@ -8510,7 +8930,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder() {
-            return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
+            return getKpiMinValue();
         }
 
         public static final int KPIMAXVALUE_FIELD_NUMBER = 2;
@@ -8540,12 +8960,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder() {
-            return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
+            return getKpiMaxValue();
         }
 
         public static final int INRANGE_FIELD_NUMBER = 3;
 
-        private boolean inRange_ = false;
+        private boolean inRange_;
 
         /**
          * <pre>
@@ -8562,7 +8982,7 @@ public final class Monitoring {
 
         public static final int INCLUDEMINVALUE_FIELD_NUMBER = 4;
 
-        private boolean includeMinValue_ = false;
+        private boolean includeMinValue_;
 
         /**
          * <pre>
@@ -8579,7 +8999,7 @@ public final class Monitoring {
 
         public static final int INCLUDEMAXVALUE_FIELD_NUMBER = 5;
 
-        private boolean includeMaxValue_ = false;
+        private boolean includeMaxValue_;
 
         /**
          * <pre>
@@ -8624,7 +9044,7 @@ public final class Monitoring {
             if (includeMaxValue_ != false) {
                 output.writeBool(5, includeMaxValue_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -8648,7 +9068,7 @@ public final class Monitoring {
             if (includeMaxValue_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(5, includeMaxValue_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -8680,7 +9100,7 @@ public final class Monitoring {
                 return false;
             if (getIncludeMaxValue() != other.getIncludeMaxValue())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -8706,7 +9126,7 @@ public final class Monitoring {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeMinValue());
             hash = (37 * hash) + INCLUDEMAXVALUE_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeMaxValue());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -8800,24 +9220,32 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiValueRange.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiMinValue_ = null;
-                if (kpiMinValueBuilder_ != null) {
-                    kpiMinValueBuilder_.dispose();
+                if (kpiMinValueBuilder_ == null) {
+                    kpiMinValue_ = null;
+                } else {
+                    kpiMinValue_ = null;
                     kpiMinValueBuilder_ = null;
                 }
-                kpiMaxValue_ = null;
-                if (kpiMaxValueBuilder_ != null) {
-                    kpiMaxValueBuilder_.dispose();
+                if (kpiMaxValueBuilder_ == null) {
+                    kpiMaxValue_ = null;
+                } else {
+                    kpiMaxValue_ = null;
                     kpiMaxValueBuilder_ = null;
                 }
                 inRange_ = false;
@@ -8848,30 +9276,51 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiValueRange buildPartial() {
                 monitoring.Monitoring.KpiValueRange result = new monitoring.Monitoring.KpiValueRange(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (kpiMinValueBuilder_ == null) {
+                    result.kpiMinValue_ = kpiMinValue_;
+                } else {
+                    result.kpiMinValue_ = kpiMinValueBuilder_.build();
                 }
+                if (kpiMaxValueBuilder_ == null) {
+                    result.kpiMaxValue_ = kpiMaxValue_;
+                } else {
+                    result.kpiMaxValue_ = kpiMaxValueBuilder_.build();
+                }
+                result.inRange_ = inRange_;
+                result.includeMinValue_ = includeMinValue_;
+                result.includeMaxValue_ = includeMaxValue_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.KpiValueRange result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiMinValue_ = kpiMinValueBuilder_ == null ? kpiMinValue_ : kpiMinValueBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.kpiMaxValue_ = kpiMaxValueBuilder_ == null ? kpiMaxValue_ : kpiMaxValueBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.inRange_ = inRange_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.includeMinValue_ = includeMinValue_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.includeMaxValue_ = includeMaxValue_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -8902,7 +9351,7 @@ public final class Monitoring {
                 if (other.getIncludeMaxValue() != false) {
                     setIncludeMaxValue(other.getIncludeMaxValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -8914,75 +9363,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiValueRange parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiMinValueFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getKpiMaxValueFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 24:
-                                {
-                                    inRange_ = input.readBool();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    includeMinValue_ = input.readBool();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            case 40:
-                                {
-                                    includeMaxValue_ = input.readBool();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 40
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiValueRange) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.KpiValue kpiMinValue_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiMinValueBuilder_;
@@ -8992,7 +9386,7 @@ public final class Monitoring {
              * @return Whether the kpiMinValue field is set.
              */
             public boolean hasKpiMinValue() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiMinValueBuilder_ != null || kpiMinValue_ != null;
             }
 
             /**
@@ -9016,11 +9410,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiMinValue_ = value;
+                    onChanged();
                 } else {
                     kpiMinValueBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -9030,11 +9423,10 @@ public final class Monitoring {
             public Builder setKpiMinValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiMinValueBuilder_ == null) {
                     kpiMinValue_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiMinValueBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -9043,16 +9435,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiMinValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiMinValueBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiMinValue_ != null && kpiMinValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
-                        getKpiMinValueBuilder().mergeFrom(value);
+                    if (kpiMinValue_ != null) {
+                        kpiMinValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiMinValue_).mergeFrom(value).buildPartial();
                     } else {
                         kpiMinValue_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiMinValueBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -9060,13 +9451,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
              */
             public Builder clearKpiMinValue() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiMinValue_ = null;
-                if (kpiMinValueBuilder_ != null) {
-                    kpiMinValueBuilder_.dispose();
+                if (kpiMinValueBuilder_ == null) {
+                    kpiMinValue_ = null;
+                    onChanged();
+                } else {
+                    kpiMinValue_ = null;
                     kpiMinValueBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -9074,7 +9465,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiMinValueBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiMinValueFieldBuilder().getBuilder();
             }
@@ -9110,7 +9500,7 @@ public final class Monitoring {
              * @return Whether the kpiMaxValue field is set.
              */
             public boolean hasKpiMaxValue() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return kpiMaxValueBuilder_ != null || kpiMaxValue_ != null;
             }
 
             /**
@@ -9134,11 +9524,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiMaxValue_ = value;
+                    onChanged();
                 } else {
                     kpiMaxValueBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -9148,11 +9537,10 @@ public final class Monitoring {
             public Builder setKpiMaxValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiMaxValueBuilder_ == null) {
                     kpiMaxValue_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiMaxValueBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -9161,16 +9549,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiMaxValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiMaxValueBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && kpiMaxValue_ != null && kpiMaxValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
-                        getKpiMaxValueBuilder().mergeFrom(value);
+                    if (kpiMaxValue_ != null) {
+                        kpiMaxValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiMaxValue_).mergeFrom(value).buildPartial();
                     } else {
                         kpiMaxValue_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiMaxValueBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -9178,13 +9565,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
              */
             public Builder clearKpiMaxValue() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                kpiMaxValue_ = null;
-                if (kpiMaxValueBuilder_ != null) {
-                    kpiMaxValueBuilder_.dispose();
+                if (kpiMaxValueBuilder_ == null) {
+                    kpiMaxValue_ = null;
+                    onChanged();
+                } else {
+                    kpiMaxValue_ = null;
                     kpiMaxValueBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -9192,7 +9579,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiMaxValueBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiMaxValueFieldBuilder().getBuilder();
             }
@@ -9245,7 +9631,6 @@ public final class Monitoring {
              */
             public Builder setInRange(boolean value) {
                 inRange_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -9259,7 +9644,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearInRange() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 inRange_ = false;
                 onChanged();
                 return this;
@@ -9291,7 +9675,6 @@ public final class Monitoring {
              */
             public Builder setIncludeMinValue(boolean value) {
                 includeMinValue_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -9305,7 +9688,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearIncludeMinValue() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 includeMinValue_ = false;
                 onChanged();
                 return this;
@@ -9337,7 +9719,6 @@ public final class Monitoring {
              */
             public Builder setIncludeMaxValue(boolean value) {
                 includeMaxValue_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -9351,7 +9732,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearIncludeMaxValue() {
-                bitField0_ = (bitField0_ & ~0x00000010);
                 includeMaxValue_ = false;
                 onChanged();
                 return this;
@@ -9384,17 +9764,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiValueRange parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiValueRange(input, extensionRegistry);
             }
         };
 
@@ -9506,7 +9876,7 @@ public final class Monitoring {
          */
         boolean getBoolVal();
 
-        monitoring.Monitoring.KpiValue.ValueCase getValueCase();
+        public monitoring.Monitoring.KpiValue.ValueCase getValueCase();
     }
 
     /**
@@ -9531,6 +9901,87 @@ public final class Monitoring {
             return new KpiValue();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiValue(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                valueCase_ = 1;
+                                value_ = input.readInt32();
+                                break;
+                            }
+                        case 16:
+                            {
+                                valueCase_ = 2;
+                                value_ = input.readUInt32();
+                                break;
+                            }
+                        case 24:
+                            {
+                                valueCase_ = 3;
+                                value_ = input.readInt64();
+                                break;
+                            }
+                        case 32:
+                            {
+                                valueCase_ = 4;
+                                value_ = input.readUInt64();
+                                break;
+                            }
+                        case 45:
+                            {
+                                valueCase_ = 5;
+                                value_ = input.readFloat();
+                                break;
+                            }
+                        case 50:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                valueCase_ = 6;
+                                value_ = s;
+                                break;
+                            }
+                        case 56:
+                            {
+                                valueCase_ = 7;
+                                value_ = input.readBool();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
         }
@@ -9542,7 +9993,6 @@ public final class Monitoring {
 
         private int valueCase_ = 0;
 
-        @SuppressWarnings("serial")
         private java.lang.Object value_;
 
         public enum ValueCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -9829,7 +10279,7 @@ public final class Monitoring {
             if (valueCase_ == 7) {
                 output.writeBool(7, (boolean) ((java.lang.Boolean) value_));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -9859,7 +10309,7 @@ public final class Monitoring {
             if (valueCase_ == 7) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(7, (boolean) ((java.lang.Boolean) value_));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -9907,7 +10357,7 @@ public final class Monitoring {
                 case 0:
                 default:
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -9951,7 +10401,7 @@ public final class Monitoring {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -10045,16 +10495,22 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiValue.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 valueCase_ = 0;
                 value_ = null;
                 return this;
@@ -10082,21 +10538,60 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiValue buildPartial() {
                 monitoring.Monitoring.KpiValue result = new monitoring.Monitoring.KpiValue(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (valueCase_ == 1) {
+                    result.value_ = value_;
+                }
+                if (valueCase_ == 2) {
+                    result.value_ = value_;
+                }
+                if (valueCase_ == 3) {
+                    result.value_ = value_;
+                }
+                if (valueCase_ == 4) {
+                    result.value_ = value_;
+                }
+                if (valueCase_ == 5) {
+                    result.value_ = value_;
+                }
+                if (valueCase_ == 6) {
+                    result.value_ = value_;
+                }
+                if (valueCase_ == 7) {
+                    result.value_ = value_;
                 }
-                buildPartialOneofs(result);
+                result.valueCase_ = valueCase_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.KpiValue result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
             }
 
-            private void buildPartialOneofs(monitoring.Monitoring.KpiValue result) {
-                result.valueCase_ = valueCase_;
-                result.value_ = this.value_;
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -10155,7 +10650,7 @@ public final class Monitoring {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -10167,85 +10662,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiValue parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    value_ = input.readInt32();
-                                    valueCase_ = 1;
-                                    break;
-                                }
-                            // case 8
-                            case 16:
-                                {
-                                    value_ = input.readUInt32();
-                                    valueCase_ = 2;
-                                    break;
-                                }
-                            // case 16
-                            case 24:
-                                {
-                                    value_ = input.readInt64();
-                                    valueCase_ = 3;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    value_ = input.readUInt64();
-                                    valueCase_ = 4;
-                                    break;
-                                }
-                            // case 32
-                            case 45:
-                                {
-                                    value_ = input.readFloat();
-                                    valueCase_ = 5;
-                                    break;
-                                }
-                            // case 45
-                            case 50:
-                                {
-                                    java.lang.String s = input.readStringRequireUtf8();
-                                    valueCase_ = 6;
-                                    value_ = s;
-                                    break;
-                                }
-                            // case 50
-                            case 56:
-                                {
-                                    value_ = input.readBool();
-                                    valueCase_ = 7;
-                                    break;
-                                }
-                            // case 56
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiValue) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -10264,8 +10691,6 @@ public final class Monitoring {
                 return this;
             }
 
-            private int bitField0_;
-
             /**
              * <code>int32 int32Val = 1;</code>
              * @return Whether the int32Val field is set.
@@ -10653,17 +11078,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiValue parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiValue(input, extensionRegistry);
             }
         };
 
@@ -10734,6 +11149,57 @@ public final class Monitoring {
             return new KpiList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    kpi_ = new java.util.ArrayList<monitoring.Monitoring.Kpi>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                kpi_.add(input.readMessage(monitoring.Monitoring.Kpi.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    kpi_ = java.util.Collections.unmodifiableList(kpi_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
         }
@@ -10745,7 +11211,6 @@ public final class Monitoring {
 
         public static final int KPI_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.Kpi> kpi_;
 
         /**
@@ -10806,7 +11271,7 @@ public final class Monitoring {
             for (int i = 0; i < kpi_.size(); i++) {
                 output.writeMessage(1, kpi_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -10818,7 +11283,7 @@ public final class Monitoring {
             for (int i = 0; i < kpi_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpi_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -10834,7 +11299,7 @@ public final class Monitoring {
             monitoring.Monitoring.KpiList other = (monitoring.Monitoring.KpiList) obj;
             if (!getKpiList().equals(other.getKpiList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -10850,7 +11315,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -10944,23 +11409,29 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getKpiFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (kpiBuilder_ == null) {
                     kpi_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    kpi_ = null;
                     kpiBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -10986,15 +11457,7 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiList buildPartial() {
                 monitoring.Monitoring.KpiList result = new monitoring.Monitoring.KpiList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiList result) {
+                int from_bitField0_ = bitField0_;
                 if (kpiBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         kpi_ = java.util.Collections.unmodifiableList(kpi_);
@@ -11004,10 +11467,38 @@ public final class Monitoring {
                 } else {
                     result.kpi_ = kpiBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.KpiList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -11047,7 +11538,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -11059,47 +11550,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    monitoring.Monitoring.Kpi m = input.readMessage(monitoring.Monitoring.Kpi.parser(), extensionRegistry);
-                                    if (kpiBuilder_ == null) {
-                                        ensureKpiIsMutable();
-                                        kpi_.add(m);
-                                    } else {
-                                        kpiBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -11369,17 +11830,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiList(input, extensionRegistry);
             }
         };
 
@@ -11450,6 +11901,57 @@ public final class Monitoring {
             return new KpiDescriptorList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiDescriptorList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    kpiDescriptorList_ = new java.util.ArrayList<monitoring.Monitoring.KpiDescriptor>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                kpiDescriptorList_.add(input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
         }
@@ -11461,7 +11963,6 @@ public final class Monitoring {
 
         public static final int KPI_DESCRIPTOR_LIST_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.KpiDescriptor> kpiDescriptorList_;
 
         /**
@@ -11522,7 +12023,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiDescriptorList_.size(); i++) {
                 output.writeMessage(1, kpiDescriptorList_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -11534,7 +12035,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiDescriptorList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpiDescriptorList_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -11550,7 +12051,7 @@ public final class Monitoring {
             monitoring.Monitoring.KpiDescriptorList other = (monitoring.Monitoring.KpiDescriptorList) obj;
             if (!getKpiDescriptorListList().equals(other.getKpiDescriptorListList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -11566,7 +12067,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_DESCRIPTOR_LIST_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiDescriptorListList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -11660,23 +12161,29 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiDescriptorList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getKpiDescriptorListFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (kpiDescriptorListBuilder_ == null) {
                     kpiDescriptorList_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    kpiDescriptorList_ = null;
                     kpiDescriptorListBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -11702,15 +12209,7 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiDescriptorList buildPartial() {
                 monitoring.Monitoring.KpiDescriptorList result = new monitoring.Monitoring.KpiDescriptorList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiDescriptorList result) {
+                int from_bitField0_ = bitField0_;
                 if (kpiDescriptorListBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
@@ -11720,10 +12219,38 @@ public final class Monitoring {
                 } else {
                     result.kpiDescriptorList_ = kpiDescriptorListBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.KpiDescriptorList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -11763,7 +12290,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -11775,47 +12302,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiDescriptorList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    monitoring.Monitoring.KpiDescriptor m = input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry);
-                                    if (kpiDescriptorListBuilder_ == null) {
-                                        ensureKpiDescriptorListIsMutable();
-                                        kpiDescriptorList_.add(m);
-                                    } else {
-                                        kpiDescriptorListBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiDescriptorList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -12085,17 +12582,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiDescriptorList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiDescriptorList(input, extensionRegistry);
             }
         };
 
@@ -12244,6 +12731,106 @@ public final class Monitoring {
             return new SubsDescriptor();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SubsDescriptor(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.SubscriptionID.Builder subBuilder = null;
+                                if (subsId_ != null) {
+                                    subBuilder = subsId_.toBuilder();
+                                }
+                                subsId_ = input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(subsId_);
+                                    subsId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 29:
+                            {
+                                samplingDurationS_ = input.readFloat();
+                                break;
+                            }
+                        case 37:
+                            {
+                                samplingIntervalS_ = input.readFloat();
+                                break;
+                            }
+                        case 42:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (startTimestamp_ != null) {
+                                    subBuilder = startTimestamp_.toBuilder();
+                                }
+                                startTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(startTimestamp_);
+                                    startTimestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 50:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (endTimestamp_ != null) {
+                                    subBuilder = endTimestamp_.toBuilder();
+                                }
+                                endTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endTimestamp_);
+                                    endTimestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
         }
@@ -12280,7 +12867,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-            return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+            return getSubsId();
         }
 
         public static final int KPI_ID_FIELD_NUMBER = 2;
@@ -12310,12 +12897,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 3;
 
-        private float samplingDurationS_ = 0F;
+        private float samplingDurationS_;
 
         /**
          * <code>float sampling_duration_s = 3;</code>
@@ -12328,7 +12915,7 @@ public final class Monitoring {
 
         public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 4;
 
-        private float samplingIntervalS_ = 0F;
+        private float samplingIntervalS_;
 
         /**
          * <code>float sampling_interval_s = 4;</code>
@@ -12378,7 +12965,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
-            return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+            return getStartTimestamp();
         }
 
         public static final int END_TIMESTAMP_FIELD_NUMBER = 6;
@@ -12420,7 +13007,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
-            return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+            return getEndTimestamp();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -12444,10 +13031,10 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(2, getKpiId());
             }
-            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
+            if (samplingDurationS_ != 0F) {
                 output.writeFloat(3, samplingDurationS_);
             }
-            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
+            if (samplingIntervalS_ != 0F) {
                 output.writeFloat(4, samplingIntervalS_);
             }
             if (startTimestamp_ != null) {
@@ -12456,7 +13043,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 output.writeMessage(6, getEndTimestamp());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -12471,10 +13058,10 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiId());
             }
-            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
+            if (samplingDurationS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingDurationS_);
             }
-            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
+            if (samplingIntervalS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(4, samplingIntervalS_);
             }
             if (startTimestamp_ != null) {
@@ -12483,7 +13070,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getEndTimestamp());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -12525,7 +13112,7 @@ public final class Monitoring {
                 if (!getEndTimestamp().equals(other.getEndTimestamp()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -12557,7 +13144,7 @@ public final class Monitoring {
                 hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getEndTimestamp().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -12651,36 +13238,46 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubsDescriptor.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                subsId_ = null;
-                if (subsIdBuilder_ != null) {
-                    subsIdBuilder_.dispose();
+                if (subsIdBuilder_ == null) {
+                    subsId_ = null;
+                } else {
+                    subsId_ = null;
                     subsIdBuilder_ = null;
                 }
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
                 samplingDurationS_ = 0F;
                 samplingIntervalS_ = 0F;
-                startTimestamp_ = null;
-                if (startTimestampBuilder_ != null) {
-                    startTimestampBuilder_.dispose();
+                if (startTimestampBuilder_ == null) {
+                    startTimestamp_ = null;
+                } else {
+                    startTimestamp_ = null;
                     startTimestampBuilder_ = null;
                 }
-                endTimestamp_ = null;
-                if (endTimestampBuilder_ != null) {
-                    endTimestampBuilder_.dispose();
+                if (endTimestampBuilder_ == null) {
+                    endTimestamp_ = null;
+                } else {
+                    endTimestamp_ = null;
                     endTimestampBuilder_ = null;
                 }
                 return this;
@@ -12708,33 +13305,60 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubsDescriptor buildPartial() {
                 monitoring.Monitoring.SubsDescriptor result = new monitoring.Monitoring.SubsDescriptor(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (subsIdBuilder_ == null) {
+                    result.subsId_ = subsId_;
+                } else {
+                    result.subsId_ = subsIdBuilder_.build();
+                }
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
+                }
+                result.samplingDurationS_ = samplingDurationS_;
+                result.samplingIntervalS_ = samplingIntervalS_;
+                if (startTimestampBuilder_ == null) {
+                    result.startTimestamp_ = startTimestamp_;
+                } else {
+                    result.startTimestamp_ = startTimestampBuilder_.build();
+                }
+                if (endTimestampBuilder_ == null) {
+                    result.endTimestamp_ = endTimestamp_;
+                } else {
+                    result.endTimestamp_ = endTimestampBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.SubsDescriptor result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.samplingDurationS_ = samplingDurationS_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.samplingIntervalS_ = samplingIntervalS_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.startTimestamp_ = startTimestampBuilder_ == null ? startTimestamp_ : startTimestampBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.endTimestamp_ = endTimestampBuilder_ == null ? endTimestamp_ : endTimestampBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -12768,7 +13392,7 @@ public final class Monitoring {
                 if (other.hasEndTimestamp()) {
                     mergeEndTimestamp(other.getEndTimestamp());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -12780,82 +13404,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.SubsDescriptor parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 29:
-                                {
-                                    samplingDurationS_ = input.readFloat();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 29
-                            case 37:
-                                {
-                                    samplingIntervalS_ = input.readFloat();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 37
-                            case 42:
-                                {
-                                    input.readMessage(getStartTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    input.readMessage(getEndTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 50
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.SubsDescriptor) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.SubscriptionID subsId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsIdBuilder_;
@@ -12865,7 +13427,7 @@ public final class Monitoring {
              * @return Whether the subsId field is set.
              */
             public boolean hasSubsId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return subsIdBuilder_ != null || subsId_ != null;
             }
 
             /**
@@ -12889,11 +13451,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     subsId_ = value;
+                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -12903,11 +13464,10 @@ public final class Monitoring {
             public Builder setSubsId(monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
                 if (subsIdBuilder_ == null) {
                     subsId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -12916,16 +13476,15 @@ public final class Monitoring {
              */
             public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
                 if (subsIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != monitoring.Monitoring.SubscriptionID.getDefaultInstance()) {
-                        getSubsIdBuilder().mergeFrom(value);
+                    if (subsId_ != null) {
+                        subsId_ = monitoring.Monitoring.SubscriptionID.newBuilder(subsId_).mergeFrom(value).buildPartial();
                     } else {
                         subsId_ = value;
                     }
+                    onChanged();
                 } else {
                     subsIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -12933,13 +13492,13 @@ public final class Monitoring {
              * <code>.monitoring.SubscriptionID subs_id = 1;</code>
              */
             public Builder clearSubsId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                subsId_ = null;
-                if (subsIdBuilder_ != null) {
-                    subsIdBuilder_.dispose();
+                if (subsIdBuilder_ == null) {
+                    subsId_ = null;
+                    onChanged();
+                } else {
+                    subsId_ = null;
                     subsIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -12947,7 +13506,6 @@ public final class Monitoring {
              * <code>.monitoring.SubscriptionID subs_id = 1;</code>
              */
             public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSubsIdFieldBuilder().getBuilder();
             }
@@ -12983,7 +13541,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -13007,11 +13565,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -13021,11 +13578,10 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -13034,16 +13590,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -13051,13 +13606,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 2;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -13065,7 +13620,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 2;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -13110,7 +13664,6 @@ public final class Monitoring {
              */
             public Builder setSamplingDurationS(float value) {
                 samplingDurationS_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -13120,7 +13673,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSamplingDurationS() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 samplingDurationS_ = 0F;
                 onChanged();
                 return this;
@@ -13144,7 +13696,6 @@ public final class Monitoring {
              */
             public Builder setSamplingIntervalS(float value) {
                 samplingIntervalS_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -13154,7 +13705,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSamplingIntervalS() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 samplingIntervalS_ = 0F;
                 onChanged();
                 return this;
@@ -13173,7 +13723,7 @@ public final class Monitoring {
              * @return Whether the startTimestamp field is set.
              */
             public boolean hasStartTimestamp() {
-                return ((bitField0_ & 0x00000010) != 0);
+                return startTimestampBuilder_ != null || startTimestamp_ != null;
             }
 
             /**
@@ -13205,11 +13755,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     startTimestamp_ = value;
+                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -13223,11 +13772,10 @@ public final class Monitoring {
             public Builder setStartTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (startTimestampBuilder_ == null) {
                     startTimestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -13240,16 +13788,15 @@ public final class Monitoring {
              */
             public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (startTimestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0) && startTimestamp_ != null && startTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getStartTimestampBuilder().mergeFrom(value);
+                    if (startTimestamp_ != null) {
+                        startTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(startTimestamp_).mergeFrom(value).buildPartial();
                     } else {
                         startTimestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     startTimestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -13261,13 +13808,13 @@ public final class Monitoring {
              * <code>.context.Timestamp start_timestamp = 5;</code>
              */
             public Builder clearStartTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000010);
-                startTimestamp_ = null;
-                if (startTimestampBuilder_ != null) {
-                    startTimestampBuilder_.dispose();
+                if (startTimestampBuilder_ == null) {
+                    startTimestamp_ = null;
+                    onChanged();
+                } else {
+                    startTimestamp_ = null;
                     startTimestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -13279,7 +13826,6 @@ public final class Monitoring {
              * <code>.context.Timestamp start_timestamp = 5;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return getStartTimestampFieldBuilder().getBuilder();
             }
@@ -13327,7 +13873,7 @@ public final class Monitoring {
              * @return Whether the endTimestamp field is set.
              */
             public boolean hasEndTimestamp() {
-                return ((bitField0_ & 0x00000020) != 0);
+                return endTimestampBuilder_ != null || endTimestamp_ != null;
             }
 
             /**
@@ -13359,11 +13905,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     endTimestamp_ = value;
+                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -13377,11 +13922,10 @@ public final class Monitoring {
             public Builder setEndTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (endTimestampBuilder_ == null) {
                     endTimestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -13394,16 +13938,15 @@ public final class Monitoring {
              */
             public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (endTimestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000020) != 0) && endTimestamp_ != null && endTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getEndTimestampBuilder().mergeFrom(value);
+                    if (endTimestamp_ != null) {
+                        endTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
                     } else {
                         endTimestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     endTimestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -13415,13 +13958,13 @@ public final class Monitoring {
              * <code>.context.Timestamp end_timestamp = 6;</code>
              */
             public Builder clearEndTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000020);
-                endTimestamp_ = null;
-                if (endTimestampBuilder_ != null) {
-                    endTimestampBuilder_.dispose();
+                if (endTimestampBuilder_ == null) {
+                    endTimestamp_ = null;
+                    onChanged();
+                } else {
+                    endTimestamp_ = null;
                     endTimestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -13433,7 +13976,6 @@ public final class Monitoring {
              * <code>.context.Timestamp end_timestamp = 6;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return getEndTimestampFieldBuilder().getBuilder();
             }
@@ -13495,17 +14037,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubsDescriptor parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SubsDescriptor(input, extensionRegistry);
             }
         };
 
@@ -13567,6 +14099,57 @@ public final class Monitoring {
             return new SubscriptionID();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SubscriptionID(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (subsId_ != null) {
+                                    subBuilder = subsId_.toBuilder();
+                                }
+                                subsId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(subsId_);
+                                    subsId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
         }
@@ -13603,7 +14186,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder() {
-            return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
+            return getSubsId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -13624,7 +14207,7 @@ public final class Monitoring {
             if (subsId_ != null) {
                 output.writeMessage(1, getSubsId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -13636,7 +14219,7 @@ public final class Monitoring {
             if (subsId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSubsId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -13656,7 +14239,7 @@ public final class Monitoring {
                 if (!getSubsId().equals(other.getSubsId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -13672,7 +14255,7 @@ public final class Monitoring {
                 hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getSubsId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -13766,19 +14349,26 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubscriptionID.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                subsId_ = null;
-                if (subsIdBuilder_ != null) {
-                    subsIdBuilder_.dispose();
+                if (subsIdBuilder_ == null) {
+                    subsId_ = null;
+                } else {
+                    subsId_ = null;
                     subsIdBuilder_ = null;
                 }
                 return this;
@@ -13806,18 +14396,43 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubscriptionID buildPartial() {
                 monitoring.Monitoring.SubscriptionID result = new monitoring.Monitoring.SubscriptionID(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (subsIdBuilder_ == null) {
+                    result.subsId_ = subsId_;
+                } else {
+                    result.subsId_ = subsIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.SubscriptionID result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -13836,7 +14451,7 @@ public final class Monitoring {
                 if (other.hasSubsId()) {
                     mergeSubsId(other.getSubsId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -13848,47 +14463,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.SubscriptionID parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.SubscriptionID) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid subsId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> subsIdBuilder_;
@@ -13898,7 +14486,7 @@ public final class Monitoring {
              * @return Whether the subsId field is set.
              */
             public boolean hasSubsId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return subsIdBuilder_ != null || subsId_ != null;
             }
 
             /**
@@ -13922,11 +14510,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     subsId_ = value;
+                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -13936,11 +14523,10 @@ public final class Monitoring {
             public Builder setSubsId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (subsIdBuilder_ == null) {
                     subsId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -13949,16 +14535,15 @@ public final class Monitoring {
              */
             public Builder mergeSubsId(context.ContextOuterClass.Uuid value) {
                 if (subsIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getSubsIdBuilder().mergeFrom(value);
+                    if (subsId_ != null) {
+                        subsId_ = context.ContextOuterClass.Uuid.newBuilder(subsId_).mergeFrom(value).buildPartial();
                     } else {
                         subsId_ = value;
                     }
+                    onChanged();
                 } else {
                     subsIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -13966,13 +14551,13 @@ public final class Monitoring {
              * <code>.context.Uuid subs_id = 1;</code>
              */
             public Builder clearSubsId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                subsId_ = null;
-                if (subsIdBuilder_ != null) {
-                    subsIdBuilder_.dispose();
+                if (subsIdBuilder_ == null) {
+                    subsId_ = null;
+                    onChanged();
+                } else {
+                    subsId_ = null;
                     subsIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -13980,7 +14565,6 @@ public final class Monitoring {
              * <code>.context.Uuid subs_id = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getSubsIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSubsIdFieldBuilder().getBuilder();
             }
@@ -14034,17 +14618,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubscriptionID parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SubscriptionID(input, extensionRegistry);
             }
         };
 
@@ -14123,6 +14697,70 @@ public final class Monitoring {
             return new SubsResponse();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SubsResponse(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.SubscriptionID.Builder subBuilder = null;
+                                if (subsId_ != null) {
+                                    subBuilder = subsId_.toBuilder();
+                                }
+                                subsId_ = input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(subsId_);
+                                    subsId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                monitoring.Monitoring.KpiList.Builder subBuilder = null;
+                                if (kpiList_ != null) {
+                                    subBuilder = kpiList_.toBuilder();
+                                }
+                                kpiList_ = input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiList_);
+                                    kpiList_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
         }
@@ -14159,7 +14797,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-            return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+            return getSubsId();
         }
 
         public static final int KPI_LIST_FIELD_NUMBER = 2;
@@ -14189,7 +14827,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
-            return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
+            return getKpiList();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -14213,7 +14851,7 @@ public final class Monitoring {
             if (kpiList_ != null) {
                 output.writeMessage(2, getKpiList());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -14228,7 +14866,7 @@ public final class Monitoring {
             if (kpiList_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiList());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -14254,7 +14892,7 @@ public final class Monitoring {
                 if (!getKpiList().equals(other.getKpiList()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -14274,7 +14912,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -14368,24 +15006,32 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubsResponse.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                subsId_ = null;
-                if (subsIdBuilder_ != null) {
-                    subsIdBuilder_.dispose();
+                if (subsIdBuilder_ == null) {
+                    subsId_ = null;
+                } else {
+                    subsId_ = null;
                     subsIdBuilder_ = null;
                 }
-                kpiList_ = null;
-                if (kpiListBuilder_ != null) {
-                    kpiListBuilder_.dispose();
+                if (kpiListBuilder_ == null) {
+                    kpiList_ = null;
+                } else {
+                    kpiList_ = null;
                     kpiListBuilder_ = null;
                 }
                 return this;
@@ -14413,21 +15059,48 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubsResponse buildPartial() {
                 monitoring.Monitoring.SubsResponse result = new monitoring.Monitoring.SubsResponse(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (subsIdBuilder_ == null) {
+                    result.subsId_ = subsId_;
+                } else {
+                    result.subsId_ = subsIdBuilder_.build();
+                }
+                if (kpiListBuilder_ == null) {
+                    result.kpiList_ = kpiList_;
+                } else {
+                    result.kpiList_ = kpiListBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.SubsResponse result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.kpiList_ = kpiListBuilder_ == null ? kpiList_ : kpiListBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -14449,7 +15122,7 @@ public final class Monitoring {
                 if (other.hasKpiList()) {
                     mergeKpiList(other.getKpiList());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -14461,54 +15134,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.SubsResponse parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getKpiListFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.SubsResponse) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.SubscriptionID subsId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsIdBuilder_;
@@ -14518,7 +15157,7 @@ public final class Monitoring {
              * @return Whether the subsId field is set.
              */
             public boolean hasSubsId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return subsIdBuilder_ != null || subsId_ != null;
             }
 
             /**
@@ -14542,11 +15181,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     subsId_ = value;
+                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -14556,11 +15194,10 @@ public final class Monitoring {
             public Builder setSubsId(monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
                 if (subsIdBuilder_ == null) {
                     subsId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -14569,16 +15206,15 @@ public final class Monitoring {
              */
             public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
                 if (subsIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != monitoring.Monitoring.SubscriptionID.getDefaultInstance()) {
-                        getSubsIdBuilder().mergeFrom(value);
+                    if (subsId_ != null) {
+                        subsId_ = monitoring.Monitoring.SubscriptionID.newBuilder(subsId_).mergeFrom(value).buildPartial();
                     } else {
                         subsId_ = value;
                     }
+                    onChanged();
                 } else {
                     subsIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -14586,13 +15222,13 @@ public final class Monitoring {
              * <code>.monitoring.SubscriptionID subs_id = 1;</code>
              */
             public Builder clearSubsId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                subsId_ = null;
-                if (subsIdBuilder_ != null) {
-                    subsIdBuilder_.dispose();
+                if (subsIdBuilder_ == null) {
+                    subsId_ = null;
+                    onChanged();
+                } else {
+                    subsId_ = null;
                     subsIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -14600,7 +15236,6 @@ public final class Monitoring {
              * <code>.monitoring.SubscriptionID subs_id = 1;</code>
              */
             public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSubsIdFieldBuilder().getBuilder();
             }
@@ -14636,7 +15271,7 @@ public final class Monitoring {
              * @return Whether the kpiList field is set.
              */
             public boolean hasKpiList() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return kpiListBuilder_ != null || kpiList_ != null;
             }
 
             /**
@@ -14660,11 +15295,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiList_ = value;
+                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -14674,11 +15308,10 @@ public final class Monitoring {
             public Builder setKpiList(monitoring.Monitoring.KpiList.Builder builderForValue) {
                 if (kpiListBuilder_ == null) {
                     kpiList_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -14687,16 +15320,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiList(monitoring.Monitoring.KpiList value) {
                 if (kpiListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && kpiList_ != null && kpiList_ != monitoring.Monitoring.KpiList.getDefaultInstance()) {
-                        getKpiListBuilder().mergeFrom(value);
+                    if (kpiList_ != null) {
+                        kpiList_ = monitoring.Monitoring.KpiList.newBuilder(kpiList_).mergeFrom(value).buildPartial();
                     } else {
                         kpiList_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiListBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -14704,13 +15336,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiList kpi_list = 2;</code>
              */
             public Builder clearKpiList() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                kpiList_ = null;
-                if (kpiListBuilder_ != null) {
-                    kpiListBuilder_.dispose();
+                if (kpiListBuilder_ == null) {
+                    kpiList_ = null;
+                    onChanged();
+                } else {
+                    kpiList_ = null;
                     kpiListBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -14718,7 +15350,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiList kpi_list = 2;</code>
              */
             public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiListFieldBuilder().getBuilder();
             }
@@ -14772,17 +15403,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubsResponse parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SubsResponse(input, extensionRegistry);
             }
         };
 
@@ -14853,6 +15474,57 @@ public final class Monitoring {
             return new SubsList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SubsList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    subsDescriptor_ = new java.util.ArrayList<monitoring.Monitoring.SubsDescriptor>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                subsDescriptor_.add(input.readMessage(monitoring.Monitoring.SubsDescriptor.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    subsDescriptor_ = java.util.Collections.unmodifiableList(subsDescriptor_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubsList_descriptor;
         }
@@ -14864,7 +15536,6 @@ public final class Monitoring {
 
         public static final int SUBS_DESCRIPTOR_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.SubsDescriptor> subsDescriptor_;
 
         /**
@@ -14925,7 +15596,7 @@ public final class Monitoring {
             for (int i = 0; i < subsDescriptor_.size(); i++) {
                 output.writeMessage(1, subsDescriptor_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -14937,7 +15608,7 @@ public final class Monitoring {
             for (int i = 0; i < subsDescriptor_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, subsDescriptor_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -14953,7 +15624,7 @@ public final class Monitoring {
             monitoring.Monitoring.SubsList other = (monitoring.Monitoring.SubsList) obj;
             if (!getSubsDescriptorList().equals(other.getSubsDescriptorList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -14969,7 +15640,7 @@ public final class Monitoring {
                 hash = (37 * hash) + SUBS_DESCRIPTOR_FIELD_NUMBER;
                 hash = (53 * hash) + getSubsDescriptorList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -15063,23 +15734,29 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubsList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getSubsDescriptorFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (subsDescriptorBuilder_ == null) {
                     subsDescriptor_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    subsDescriptor_ = null;
                     subsDescriptorBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -15105,15 +15782,7 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubsList buildPartial() {
                 monitoring.Monitoring.SubsList result = new monitoring.Monitoring.SubsList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.SubsList result) {
+                int from_bitField0_ = bitField0_;
                 if (subsDescriptorBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         subsDescriptor_ = java.util.Collections.unmodifiableList(subsDescriptor_);
@@ -15123,10 +15792,38 @@ public final class Monitoring {
                 } else {
                     result.subsDescriptor_ = subsDescriptorBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.SubsList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -15166,7 +15863,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -15178,47 +15875,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.SubsList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    monitoring.Monitoring.SubsDescriptor m = input.readMessage(monitoring.Monitoring.SubsDescriptor.parser(), extensionRegistry);
-                                    if (subsDescriptorBuilder_ == null) {
-                                        ensureSubsDescriptorIsMutable();
-                                        subsDescriptor_.add(m);
-                                    } else {
-                                        subsDescriptorBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.SubsList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -15488,17 +16155,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubsList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SubsList(input, extensionRegistry);
             }
         };
 
@@ -15637,6 +16294,108 @@ public final class Monitoring {
             return new AlarmDescriptor();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AlarmDescriptor(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.AlarmID.Builder subBuilder = null;
+                                if (alarmId_ != null) {
+                                    subBuilder = alarmId_.toBuilder();
+                                }
+                                alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(alarmId_);
+                                    alarmId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                alarmDescription_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 42:
+                            {
+                                monitoring.Monitoring.KpiValueRange.Builder subBuilder = null;
+                                if (kpiValueRange_ != null) {
+                                    subBuilder = kpiValueRange_.toBuilder();
+                                }
+                                kpiValueRange_ = input.readMessage(monitoring.Monitoring.KpiValueRange.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiValueRange_);
+                                    kpiValueRange_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 50:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (timestamp_ != null) {
+                                    subBuilder = timestamp_.toBuilder();
+                                }
+                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(timestamp_);
+                                    timestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
         }
@@ -15673,13 +16432,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+            return getAlarmId();
         }
 
         public static final int ALARM_DESCRIPTION_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object alarmDescription_ = "";
+        private volatile java.lang.Object alarmDescription_;
 
         /**
          * <code>string alarm_description = 2;</code>
@@ -15716,8 +16474,7 @@ public final class Monitoring {
 
         public static final int NAME_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 3;</code>
@@ -15779,7 +16536,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int KPI_VALUE_RANGE_FIELD_NUMBER = 5;
@@ -15809,7 +16566,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder() {
-            return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
+            return getKpiValueRange();
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 6;
@@ -15839,7 +16596,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+            return getTimestamp();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -15860,10 +16617,10 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alarmDescription_)) {
+            if (!getAlarmDescriptionBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, alarmDescription_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
             }
             if (kpiId_ != null) {
@@ -15875,7 +16632,7 @@ public final class Monitoring {
             if (timestamp_ != null) {
                 output.writeMessage(6, getTimestamp());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -15887,10 +16644,10 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alarmDescription_)) {
+            if (!getAlarmDescriptionBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, alarmDescription_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
             }
             if (kpiId_ != null) {
@@ -15902,7 +16659,7 @@ public final class Monitoring {
             if (timestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getTimestamp());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -15944,7 +16701,7 @@ public final class Monitoring {
                 if (!getTimestamp().equals(other.getTimestamp()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -15976,7 +16733,7 @@ public final class Monitoring {
                 hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getTimestamp().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -16070,36 +16827,46 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmDescriptor.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
                 alarmDescription_ = "";
                 name_ = "";
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                kpiValueRange_ = null;
-                if (kpiValueRangeBuilder_ != null) {
-                    kpiValueRangeBuilder_.dispose();
+                if (kpiValueRangeBuilder_ == null) {
+                    kpiValueRange_ = null;
+                } else {
+                    kpiValueRange_ = null;
                     kpiValueRangeBuilder_ = null;
                 }
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
                 return this;
@@ -16127,33 +16894,60 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmDescriptor buildPartial() {
                 monitoring.Monitoring.AlarmDescriptor result = new monitoring.Monitoring.AlarmDescriptor(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (alarmIdBuilder_ == null) {
+                    result.alarmId_ = alarmId_;
+                } else {
+                    result.alarmId_ = alarmIdBuilder_.build();
+                }
+                result.alarmDescription_ = alarmDescription_;
+                result.name_ = name_;
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
+                }
+                if (kpiValueRangeBuilder_ == null) {
+                    result.kpiValueRange_ = kpiValueRange_;
+                } else {
+                    result.kpiValueRange_ = kpiValueRangeBuilder_.build();
+                }
+                if (timestampBuilder_ == null) {
+                    result.timestamp_ = timestamp_;
+                } else {
+                    result.timestamp_ = timestampBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.AlarmDescriptor result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.alarmDescription_ = alarmDescription_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.kpiValueRange_ = kpiValueRangeBuilder_ == null ? kpiValueRange_ : kpiValueRangeBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -16174,12 +16968,10 @@ public final class Monitoring {
                 }
                 if (!other.getAlarmDescription().isEmpty()) {
                     alarmDescription_ = other.alarmDescription_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (other.hasKpiId()) {
@@ -16191,7 +16983,7 @@ public final class Monitoring {
                 if (other.hasTimestamp()) {
                     mergeTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -16203,82 +16995,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.AlarmDescriptor parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    alarmDescription_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    input.readMessage(getKpiValueRangeFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 50
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.AlarmDescriptor) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.AlarmID alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_;
@@ -16288,7 +17018,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return alarmIdBuilder_ != null || alarmId_ != null;
             }
 
             /**
@@ -16312,11 +17042,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -16326,11 +17055,10 @@ public final class Monitoring {
             public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -16339,16 +17067,15 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
                 if (alarmIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
-                        getAlarmIdBuilder().mergeFrom(value);
+                    if (alarmId_ != null) {
+                        alarmId_ = monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
                     } else {
                         alarmId_ = value;
                     }
+                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -16356,13 +17083,13 @@ public final class Monitoring {
              * <code>.monitoring.AlarmID alarm_id = 1;</code>
              */
             public Builder clearAlarmId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                    onChanged();
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -16370,7 +17097,6 @@ public final class Monitoring {
              * <code>.monitoring.AlarmID alarm_id = 1;</code>
              */
             public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -16440,7 +17166,6 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 alarmDescription_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -16451,7 +17176,6 @@ public final class Monitoring {
              */
             public Builder clearAlarmDescription() {
                 alarmDescription_ = getDefaultInstance().getAlarmDescription();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -16467,7 +17191,6 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 alarmDescription_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -16515,7 +17238,6 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -16526,7 +17248,6 @@ public final class Monitoring {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -16542,7 +17263,6 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -16556,7 +17276,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000008) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -16580,11 +17300,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -16594,11 +17313,10 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -16607,16 +17325,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -16624,13 +17341,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 4;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000008);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -16638,7 +17355,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 4;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -16674,7 +17390,7 @@ public final class Monitoring {
              * @return Whether the kpiValueRange field is set.
              */
             public boolean hasKpiValueRange() {
-                return ((bitField0_ & 0x00000010) != 0);
+                return kpiValueRangeBuilder_ != null || kpiValueRange_ != null;
             }
 
             /**
@@ -16698,11 +17414,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiValueRange_ = value;
+                    onChanged();
                 } else {
                     kpiValueRangeBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -16712,11 +17427,10 @@ public final class Monitoring {
             public Builder setKpiValueRange(monitoring.Monitoring.KpiValueRange.Builder builderForValue) {
                 if (kpiValueRangeBuilder_ == null) {
                     kpiValueRange_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiValueRangeBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -16725,16 +17439,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiValueRange(monitoring.Monitoring.KpiValueRange value) {
                 if (kpiValueRangeBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0) && kpiValueRange_ != null && kpiValueRange_ != monitoring.Monitoring.KpiValueRange.getDefaultInstance()) {
-                        getKpiValueRangeBuilder().mergeFrom(value);
+                    if (kpiValueRange_ != null) {
+                        kpiValueRange_ = monitoring.Monitoring.KpiValueRange.newBuilder(kpiValueRange_).mergeFrom(value).buildPartial();
                     } else {
                         kpiValueRange_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiValueRangeBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -16742,13 +17455,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
              */
             public Builder clearKpiValueRange() {
-                bitField0_ = (bitField0_ & ~0x00000010);
-                kpiValueRange_ = null;
-                if (kpiValueRangeBuilder_ != null) {
-                    kpiValueRangeBuilder_.dispose();
+                if (kpiValueRangeBuilder_ == null) {
+                    kpiValueRange_ = null;
+                    onChanged();
+                } else {
+                    kpiValueRange_ = null;
                     kpiValueRangeBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -16756,7 +17469,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
              */
             public monitoring.Monitoring.KpiValueRange.Builder getKpiValueRangeBuilder() {
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return getKpiValueRangeFieldBuilder().getBuilder();
             }
@@ -16792,7 +17504,7 @@ public final class Monitoring {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return ((bitField0_ & 0x00000020) != 0);
+                return timestampBuilder_ != null || timestamp_ != null;
             }
 
             /**
@@ -16816,11 +17528,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -16830,11 +17541,10 @@ public final class Monitoring {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -16843,16 +17553,15 @@ public final class Monitoring {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000020) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getTimestampBuilder().mergeFrom(value);
+                    if (timestamp_ != null) {
+                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
                     } else {
                         timestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -16860,13 +17569,13 @@ public final class Monitoring {
              * <code>.context.Timestamp timestamp = 6;</code>
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000020);
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                    onChanged();
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -16874,7 +17583,6 @@ public final class Monitoring {
              * <code>.context.Timestamp timestamp = 6;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -16928,17 +17636,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmDescriptor parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AlarmDescriptor(input, extensionRegistry);
             }
         };
 
@@ -17000,6 +17698,57 @@ public final class Monitoring {
             return new AlarmID();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AlarmID(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (alarmId_ != null) {
+                                    subBuilder = alarmId_.toBuilder();
+                                }
+                                alarmId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(alarmId_);
+                                    alarmId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
         }
@@ -17036,7 +17785,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder() {
-            return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
+            return getAlarmId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -17057,7 +17806,7 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -17069,7 +17818,7 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -17089,7 +17838,7 @@ public final class Monitoring {
                 if (!getAlarmId().equals(other.getAlarmId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -17105,7 +17854,7 @@ public final class Monitoring {
                 hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getAlarmId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -17199,19 +17948,26 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmID.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
                 return this;
@@ -17239,18 +17995,43 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmID buildPartial() {
                 monitoring.Monitoring.AlarmID result = new monitoring.Monitoring.AlarmID(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (alarmIdBuilder_ == null) {
+                    result.alarmId_ = alarmId_;
+                } else {
+                    result.alarmId_ = alarmIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.AlarmID result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -17269,7 +18050,7 @@ public final class Monitoring {
                 if (other.hasAlarmId()) {
                     mergeAlarmId(other.getAlarmId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -17278,50 +18059,23 @@ public final class Monitoring {
             public final boolean isInitialized() {
                 return true;
             }
-
-            @java.lang.Override
-            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
-                try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                monitoring.Monitoring.AlarmID parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.AlarmID) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> alarmIdBuilder_;
@@ -17331,7 +18085,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return alarmIdBuilder_ != null || alarmId_ != null;
             }
 
             /**
@@ -17355,11 +18109,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17369,11 +18122,10 @@ public final class Monitoring {
             public Builder setAlarmId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17382,16 +18134,15 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(context.ContextOuterClass.Uuid value) {
                 if (alarmIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getAlarmIdBuilder().mergeFrom(value);
+                    if (alarmId_ != null) {
+                        alarmId_ = context.ContextOuterClass.Uuid.newBuilder(alarmId_).mergeFrom(value).buildPartial();
                     } else {
                         alarmId_ = value;
                     }
+                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17399,13 +18150,13 @@ public final class Monitoring {
              * <code>.context.Uuid alarm_id = 1;</code>
              */
             public Builder clearAlarmId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                    onChanged();
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -17413,7 +18164,6 @@ public final class Monitoring {
              * <code>.context.Uuid alarm_id = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getAlarmIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -17467,17 +18217,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmID parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AlarmID(input, extensionRegistry);
             }
         };
 
@@ -17551,6 +18291,67 @@ public final class Monitoring {
             return new AlarmSubscription();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AlarmSubscription(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.AlarmID.Builder subBuilder = null;
+                                if (alarmId_ != null) {
+                                    subBuilder = alarmId_.toBuilder();
+                                }
+                                alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(alarmId_);
+                                    alarmId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 21:
+                            {
+                                subscriptionTimeoutS_ = input.readFloat();
+                                break;
+                            }
+                        case 29:
+                            {
+                                subscriptionFrequencyMs_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_descriptor;
         }
@@ -17587,12 +18388,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+            return getAlarmId();
         }
 
         public static final int SUBSCRIPTION_TIMEOUT_S_FIELD_NUMBER = 2;
 
-        private float subscriptionTimeoutS_ = 0F;
+        private float subscriptionTimeoutS_;
 
         /**
          * <code>float subscription_timeout_s = 2;</code>
@@ -17605,7 +18406,7 @@ public final class Monitoring {
 
         public static final int SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER = 3;
 
-        private float subscriptionFrequencyMs_ = 0F;
+        private float subscriptionFrequencyMs_;
 
         /**
          * <code>float subscription_frequency_ms = 3;</code>
@@ -17634,13 +18435,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            if (java.lang.Float.floatToRawIntBits(subscriptionTimeoutS_) != 0) {
+            if (subscriptionTimeoutS_ != 0F) {
                 output.writeFloat(2, subscriptionTimeoutS_);
             }
-            if (java.lang.Float.floatToRawIntBits(subscriptionFrequencyMs_) != 0) {
+            if (subscriptionFrequencyMs_ != 0F) {
                 output.writeFloat(3, subscriptionFrequencyMs_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -17652,13 +18453,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            if (java.lang.Float.floatToRawIntBits(subscriptionTimeoutS_) != 0) {
+            if (subscriptionTimeoutS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, subscriptionTimeoutS_);
             }
-            if (java.lang.Float.floatToRawIntBits(subscriptionFrequencyMs_) != 0) {
+            if (subscriptionFrequencyMs_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, subscriptionFrequencyMs_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -17682,7 +18483,7 @@ public final class Monitoring {
                 return false;
             if (java.lang.Float.floatToIntBits(getSubscriptionFrequencyMs()) != java.lang.Float.floatToIntBits(other.getSubscriptionFrequencyMs()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -17702,7 +18503,7 @@ public final class Monitoring {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSubscriptionTimeoutS());
             hash = (37 * hash) + SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSubscriptionFrequencyMs());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -17796,19 +18597,26 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmSubscription.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
                 subscriptionTimeoutS_ = 0F;
@@ -17838,24 +18646,45 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmSubscription buildPartial() {
                 monitoring.Monitoring.AlarmSubscription result = new monitoring.Monitoring.AlarmSubscription(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (alarmIdBuilder_ == null) {
+                    result.alarmId_ = alarmId_;
+                } else {
+                    result.alarmId_ = alarmIdBuilder_.build();
                 }
+                result.subscriptionTimeoutS_ = subscriptionTimeoutS_;
+                result.subscriptionFrequencyMs_ = subscriptionFrequencyMs_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.AlarmSubscription result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.subscriptionTimeoutS_ = subscriptionTimeoutS_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.subscriptionFrequencyMs_ = subscriptionFrequencyMs_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -17880,7 +18709,7 @@ public final class Monitoring {
                 if (other.getSubscriptionFrequencyMs() != 0F) {
                     setSubscriptionFrequencyMs(other.getSubscriptionFrequencyMs());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -17892,61 +18721,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.AlarmSubscription parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 21:
-                                {
-                                    subscriptionTimeoutS_ = input.readFloat();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 21
-                            case 29:
-                                {
-                                    subscriptionFrequencyMs_ = input.readFloat();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 29
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.AlarmSubscription) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.AlarmID alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_;
@@ -17956,7 +18744,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return alarmIdBuilder_ != null || alarmId_ != null;
             }
 
             /**
@@ -17980,11 +18768,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17994,11 +18781,10 @@ public final class Monitoring {
             public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -18007,16 +18793,15 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
                 if (alarmIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
-                        getAlarmIdBuilder().mergeFrom(value);
+                    if (alarmId_ != null) {
+                        alarmId_ = monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
                     } else {
                         alarmId_ = value;
                     }
+                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -18024,13 +18809,13 @@ public final class Monitoring {
              * <code>.monitoring.AlarmID alarm_id = 1;</code>
              */
             public Builder clearAlarmId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                    onChanged();
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -18038,7 +18823,6 @@ public final class Monitoring {
              * <code>.monitoring.AlarmID alarm_id = 1;</code>
              */
             public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -18083,7 +18867,6 @@ public final class Monitoring {
              */
             public Builder setSubscriptionTimeoutS(float value) {
                 subscriptionTimeoutS_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -18093,7 +18876,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSubscriptionTimeoutS() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 subscriptionTimeoutS_ = 0F;
                 onChanged();
                 return this;
@@ -18117,7 +18899,6 @@ public final class Monitoring {
              */
             public Builder setSubscriptionFrequencyMs(float value) {
                 subscriptionFrequencyMs_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -18127,7 +18908,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSubscriptionFrequencyMs() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 subscriptionFrequencyMs_ = 0F;
                 onChanged();
                 return this;
@@ -18160,17 +18940,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmSubscription parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AlarmSubscription(input, extensionRegistry);
             }
         };
 
@@ -18262,6 +19032,76 @@ public final class Monitoring {
             return new AlarmResponse();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AlarmResponse(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.AlarmID.Builder subBuilder = null;
+                                if (alarmId_ != null) {
+                                    subBuilder = alarmId_.toBuilder();
+                                }
+                                alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(alarmId_);
+                                    alarmId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                text_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                monitoring.Monitoring.KpiList.Builder subBuilder = null;
+                                if (kpiList_ != null) {
+                                    subBuilder = kpiList_.toBuilder();
+                                }
+                                kpiList_ = input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiList_);
+                                    kpiList_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_descriptor;
         }
@@ -18298,13 +19138,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+            return getAlarmId();
         }
 
         public static final int TEXT_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object text_ = "";
+        private volatile java.lang.Object text_;
 
         /**
          * <code>string text = 2;</code>
@@ -18366,7 +19205,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
-            return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
+            return getKpiList();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -18387,13 +19226,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
+            if (!getTextBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, text_);
             }
             if (kpiList_ != null) {
                 output.writeMessage(3, getKpiList());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -18405,13 +19244,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
+            if (!getTextBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, text_);
             }
             if (kpiList_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKpiList());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -18439,7 +19278,7 @@ public final class Monitoring {
                 if (!getKpiList().equals(other.getKpiList()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -18461,7 +19300,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -18555,25 +19394,33 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmResponse.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
                 text_ = "";
-                kpiList_ = null;
-                if (kpiListBuilder_ != null) {
-                    kpiListBuilder_.dispose();
+                if (kpiListBuilder_ == null) {
+                    kpiList_ = null;
+                } else {
+                    kpiList_ = null;
                     kpiListBuilder_ = null;
                 }
                 return this;
@@ -18601,24 +19448,49 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmResponse buildPartial() {
                 monitoring.Monitoring.AlarmResponse result = new monitoring.Monitoring.AlarmResponse(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (alarmIdBuilder_ == null) {
+                    result.alarmId_ = alarmId_;
+                } else {
+                    result.alarmId_ = alarmIdBuilder_.build();
+                }
+                result.text_ = text_;
+                if (kpiListBuilder_ == null) {
+                    result.kpiList_ = kpiList_;
+                } else {
+                    result.kpiList_ = kpiListBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.AlarmResponse result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.text_ = text_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.kpiList_ = kpiListBuilder_ == null ? kpiList_ : kpiListBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -18639,13 +19511,12 @@ public final class Monitoring {
                 }
                 if (!other.getText().isEmpty()) {
                     text_ = other.text_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.hasKpiList()) {
                     mergeKpiList(other.getKpiList());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -18657,61 +19528,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.AlarmResponse parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    text_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getKpiListFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.AlarmResponse) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.AlarmID alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_;
@@ -18721,7 +19551,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return alarmIdBuilder_ != null || alarmId_ != null;
             }
 
             /**
@@ -18745,11 +19575,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -18759,11 +19588,10 @@ public final class Monitoring {
             public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -18772,16 +19600,15 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
                 if (alarmIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
-                        getAlarmIdBuilder().mergeFrom(value);
+                    if (alarmId_ != null) {
+                        alarmId_ = monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
                     } else {
                         alarmId_ = value;
                     }
+                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -18789,13 +19616,13 @@ public final class Monitoring {
              * <code>.monitoring.AlarmID alarm_id = 1;</code>
              */
             public Builder clearAlarmId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                    onChanged();
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -18803,7 +19630,6 @@ public final class Monitoring {
              * <code>.monitoring.AlarmID alarm_id = 1;</code>
              */
             public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -18873,7 +19699,6 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 text_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -18884,7 +19709,6 @@ public final class Monitoring {
              */
             public Builder clearText() {
                 text_ = getDefaultInstance().getText();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -18900,7 +19724,6 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 text_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -18914,7 +19737,7 @@ public final class Monitoring {
              * @return Whether the kpiList field is set.
              */
             public boolean hasKpiList() {
-                return ((bitField0_ & 0x00000004) != 0);
+                return kpiListBuilder_ != null || kpiList_ != null;
             }
 
             /**
@@ -18938,11 +19761,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiList_ = value;
+                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -18952,11 +19774,10 @@ public final class Monitoring {
             public Builder setKpiList(monitoring.Monitoring.KpiList.Builder builderForValue) {
                 if (kpiListBuilder_ == null) {
                     kpiList_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -18965,16 +19786,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiList(monitoring.Monitoring.KpiList value) {
                 if (kpiListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0) && kpiList_ != null && kpiList_ != monitoring.Monitoring.KpiList.getDefaultInstance()) {
-                        getKpiListBuilder().mergeFrom(value);
+                    if (kpiList_ != null) {
+                        kpiList_ = monitoring.Monitoring.KpiList.newBuilder(kpiList_).mergeFrom(value).buildPartial();
                     } else {
                         kpiList_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiListBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -18982,13 +19802,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiList kpi_list = 3;</code>
              */
             public Builder clearKpiList() {
-                bitField0_ = (bitField0_ & ~0x00000004);
-                kpiList_ = null;
-                if (kpiListBuilder_ != null) {
-                    kpiListBuilder_.dispose();
+                if (kpiListBuilder_ == null) {
+                    kpiList_ = null;
+                    onChanged();
+                } else {
+                    kpiList_ = null;
                     kpiListBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -18996,7 +19816,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiList kpi_list = 3;</code>
              */
             public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() {
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return getKpiListFieldBuilder().getBuilder();
             }
@@ -19050,17 +19869,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmResponse parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AlarmResponse(input, extensionRegistry);
             }
         };
 
@@ -19131,6 +19940,57 @@ public final class Monitoring {
             return new AlarmList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AlarmList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    alarmDescriptor_ = new java.util.ArrayList<monitoring.Monitoring.AlarmDescriptor>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                alarmDescriptor_.add(input.readMessage(monitoring.Monitoring.AlarmDescriptor.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    alarmDescriptor_ = java.util.Collections.unmodifiableList(alarmDescriptor_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmList_descriptor;
         }
@@ -19142,7 +20002,6 @@ public final class Monitoring {
 
         public static final int ALARM_DESCRIPTOR_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.AlarmDescriptor> alarmDescriptor_;
 
         /**
@@ -19203,7 +20062,7 @@ public final class Monitoring {
             for (int i = 0; i < alarmDescriptor_.size(); i++) {
                 output.writeMessage(1, alarmDescriptor_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -19215,7 +20074,7 @@ public final class Monitoring {
             for (int i = 0; i < alarmDescriptor_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, alarmDescriptor_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -19231,7 +20090,7 @@ public final class Monitoring {
             monitoring.Monitoring.AlarmList other = (monitoring.Monitoring.AlarmList) obj;
             if (!getAlarmDescriptorList().equals(other.getAlarmDescriptorList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -19247,7 +20106,7 @@ public final class Monitoring {
                 hash = (37 * hash) + ALARM_DESCRIPTOR_FIELD_NUMBER;
                 hash = (53 * hash) + getAlarmDescriptorList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -19341,23 +20200,29 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getAlarmDescriptorFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (alarmDescriptorBuilder_ == null) {
                     alarmDescriptor_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    alarmDescriptor_ = null;
                     alarmDescriptorBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -19383,15 +20248,7 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmList buildPartial() {
                 monitoring.Monitoring.AlarmList result = new monitoring.Monitoring.AlarmList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.AlarmList result) {
+                int from_bitField0_ = bitField0_;
                 if (alarmDescriptorBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         alarmDescriptor_ = java.util.Collections.unmodifiableList(alarmDescriptor_);
@@ -19401,10 +20258,38 @@ public final class Monitoring {
                 } else {
                     result.alarmDescriptor_ = alarmDescriptorBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.AlarmList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -19444,7 +20329,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -19456,47 +20341,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.AlarmList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    monitoring.Monitoring.AlarmDescriptor m = input.readMessage(monitoring.Monitoring.AlarmDescriptor.parser(), extensionRegistry);
-                                    if (alarmDescriptorBuilder_ == null) {
-                                        ensureAlarmDescriptorIsMutable();
-                                        alarmDescriptor_.add(m);
-                                    } else {
-                                        alarmDescriptorBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.AlarmList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -19766,17 +20621,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AlarmList(input, extensionRegistry);
             }
         };
 
diff --git a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
index 7a275e5777320134c04591f4d9c29e23035148bf..83dffd6257d5685ee7d49c45258bbf1d68d3a817 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
@@ -4,8 +4,7 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: monitoring.proto")
-@io.grpc.stub.annotations.GrpcGenerated
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: monitoring.proto")
 public final class MonitoringServiceGrpc {
 
     private MonitoringServiceGrpc() {
@@ -328,130 +327,123 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public interface AsyncService {
+    public static abstract class MonitoringServiceImplBase implements io.grpc.BindableService {
 
         /**
          */
-        default void setKpi(monitoring.Monitoring.KpiDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId> responseObserver) {
+        public void setKpi(monitoring.Monitoring.KpiDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiMethod(), responseObserver);
         }
 
         /**
          */
-        default void deleteKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void deleteKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteKpiMethod(), responseObserver);
         }
 
         /**
          */
-        default void getKpiDescriptor(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor> responseObserver) {
+        public void getKpiDescriptor(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorMethod(), responseObserver);
         }
 
         /**
          */
-        default void getKpiDescriptorList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList> responseObserver) {
+        public void getKpiDescriptorList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorListMethod(), responseObserver);
         }
 
         /**
          */
-        default void includeKpi(monitoring.Monitoring.Kpi request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void includeKpi(monitoring.Monitoring.Kpi request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getIncludeKpiMethod(), responseObserver);
         }
 
         /**
          */
-        default void monitorKpi(monitoring.Monitoring.MonitorKpiRequest request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void monitorKpi(monitoring.Monitoring.MonitorKpiRequest request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getMonitorKpiMethod(), responseObserver);
         }
 
         /**
          */
-        default void queryKpiData(monitoring.Monitoring.KpiQuery request, io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable> responseObserver) {
+        public void queryKpiData(monitoring.Monitoring.KpiQuery request, io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getQueryKpiDataMethod(), responseObserver);
         }
 
         /**
          */
-        default void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsResponse> responseObserver) {
+        public void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsResponse> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiSubscriptionMethod(), responseObserver);
         }
 
         /**
          */
-        default void getSubsDescriptor(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsDescriptor> responseObserver) {
+        public void getSubsDescriptor(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsDescriptor> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSubsDescriptorMethod(), responseObserver);
         }
 
         /**
          */
-        default void getSubscriptions(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsList> responseObserver) {
+        public void getSubscriptions(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSubscriptionsMethod(), responseObserver);
         }
 
         /**
          */
-        default void deleteSubscription(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void deleteSubscription(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteSubscriptionMethod(), responseObserver);
         }
 
         /**
          */
-        default void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID> responseObserver) {
+        public void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiAlarmMethod(), responseObserver);
         }
 
         /**
          */
-        default void getAlarms(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmList> responseObserver) {
+        public void getAlarms(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmsMethod(), responseObserver);
         }
 
         /**
          */
-        default void getAlarmDescriptor(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmDescriptor> responseObserver) {
+        public void getAlarmDescriptor(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmDescriptor> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmDescriptorMethod(), responseObserver);
         }
 
         /**
          */
-        default void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse> responseObserver) {
+        public void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmResponseStreamMethod(), responseObserver);
         }
 
         /**
          */
-        default void deleteAlarm(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void deleteAlarm(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteAlarmMethod(), responseObserver);
         }
 
         /**
          */
-        default void getStreamKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
+        public void getStreamKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetStreamKpiMethod(), responseObserver);
         }
 
         /**
          */
-        default void getInstantKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
+        public void getInstantKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInstantKpiMethod(), responseObserver);
         }
-    }
-
-    /**
-     * Base class for the server implementation of the service MonitoringService.
-     */
-    public static abstract class MonitoringServiceImplBase implements io.grpc.BindableService, AsyncService {
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return MonitoringServiceGrpc.bindService(this);
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getSetKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId>(this, METHODID_SET_KPI))).addMethod(getDeleteKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty>(this, METHODID_DELETE_KPI))).addMethod(getGetKpiDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor>(this, METHODID_GET_KPI_DESCRIPTOR))).addMethod(getGetKpiDescriptorListMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.KpiDescriptorList>(this, METHODID_GET_KPI_DESCRIPTOR_LIST))).addMethod(getIncludeKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.Kpi, context.ContextOuterClass.Empty>(this, METHODID_INCLUDE_KPI))).addMethod(getMonitorKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.MonitorKpiRequest, context.ContextOuterClass.Empty>(this, METHODID_MONITOR_KPI))).addMethod(getQueryKpiDataMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable>(this, METHODID_QUERY_KPI_DATA))).addMethod(getSetKpiSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsResponse>(this, METHODID_SET_KPI_SUBSCRIPTION))).addMethod(getGetSubsDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubsDescriptor>(this, METHODID_GET_SUBS_DESCRIPTOR))).addMethod(getGetSubscriptionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.SubsList>(this, METHODID_GET_SUBSCRIPTIONS))).addMethod(getDeleteSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty>(this, METHODID_DELETE_SUBSCRIPTION))).addMethod(getSetKpiAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID>(this, METHODID_SET_KPI_ALARM))).addMethod(getGetAlarmsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.AlarmList>(this, METHODID_GET_ALARMS))).addMethod(getGetAlarmDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmDescriptor>(this, METHODID_GET_ALARM_DESCRIPTOR))).addMethod(getGetAlarmResponseStreamMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse>(this, METHODID_GET_ALARM_RESPONSE_STREAM))).addMethod(getDeleteAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty>(this, METHODID_DELETE_ALARM))).addMethod(getGetStreamKpiMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>(this, METHODID_GET_STREAM_KPI))).addMethod(getGetInstantKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>(this, METHODID_GET_INSTANT_KPI))).build();
         }
     }
 
     /**
-     * A stub to allow clients to do asynchronous rpc calls to service MonitoringService.
      */
     public static class MonitoringServiceStub extends io.grpc.stub.AbstractAsyncStub<MonitoringServiceStub> {
 
@@ -574,7 +566,6 @@ public final class MonitoringServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do synchronous rpc calls to service MonitoringService.
      */
     public static class MonitoringServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<MonitoringServiceBlockingStub> {
 
@@ -697,7 +688,6 @@ public final class MonitoringServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do ListenableFuture-style rpc calls to service MonitoringService.
      */
     public static class MonitoringServiceFutureStub extends io.grpc.stub.AbstractFutureStub<MonitoringServiceFutureStub> {
 
@@ -839,11 +829,11 @@ public final class MonitoringServiceGrpc {
 
     private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
 
-        private final AsyncService serviceImpl;
+        private final MonitoringServiceImplBase serviceImpl;
 
         private final int methodId;
 
-        MethodHandlers(AsyncService serviceImpl, int methodId) {
+        MethodHandlers(MonitoringServiceImplBase serviceImpl, int methodId) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
         }
@@ -921,10 +911,6 @@ public final class MonitoringServiceGrpc {
         }
     }
 
-    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
-        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getSetKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId>(service, METHODID_SET_KPI))).addMethod(getDeleteKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty>(service, METHODID_DELETE_KPI))).addMethod(getGetKpiDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor>(service, METHODID_GET_KPI_DESCRIPTOR))).addMethod(getGetKpiDescriptorListMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.KpiDescriptorList>(service, METHODID_GET_KPI_DESCRIPTOR_LIST))).addMethod(getIncludeKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.Kpi, context.ContextOuterClass.Empty>(service, METHODID_INCLUDE_KPI))).addMethod(getMonitorKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.MonitorKpiRequest, context.ContextOuterClass.Empty>(service, METHODID_MONITOR_KPI))).addMethod(getQueryKpiDataMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable>(service, METHODID_QUERY_KPI_DATA))).addMethod(getSetKpiSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsResponse>(service, METHODID_SET_KPI_SUBSCRIPTION))).addMethod(getGetSubsDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubsDescriptor>(service, METHODID_GET_SUBS_DESCRIPTOR))).addMethod(getGetSubscriptionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.SubsList>(service, METHODID_GET_SUBSCRIPTIONS))).addMethod(getDeleteSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty>(service, METHODID_DELETE_SUBSCRIPTION))).addMethod(getSetKpiAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID>(service, METHODID_SET_KPI_ALARM))).addMethod(getGetAlarmsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.AlarmList>(service, METHODID_GET_ALARMS))).addMethod(getGetAlarmDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmDescriptor>(service, METHODID_GET_ALARM_DESCRIPTOR))).addMethod(getGetAlarmResponseStreamMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse>(service, METHODID_GET_ALARM_RESPONSE_STREAM))).addMethod(getDeleteAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty>(service, METHODID_DELETE_ALARM))).addMethod(getGetStreamKpiMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>(service, METHODID_GET_STREAM_KPI))).addMethod(getGetInstantKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>(service, METHODID_GET_INSTANT_KPI))).build();
-    }
-
     private static abstract class MonitoringServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
         MonitoringServiceBaseDescriptorSupplier() {
diff --git a/src/policy/target/generated-sources/grpc/policy/Policy.java b/src/policy/target/generated-sources/grpc/policy/Policy.java
index 30aa624d4c5f5f8be2ac57994afff26d53644fdf..b57d9ae7577153c1623a34e2aea9c38e81e02a08 100644
--- a/src/policy/target/generated-sources/grpc/policy/Policy.java
+++ b/src/policy/target/generated-sources/grpc/policy/Policy.java
@@ -346,6 +346,57 @@ public final class Policy {
             return new PolicyRuleId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private PolicyRuleId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (uuid_ != null) {
+                                    subBuilder = uuid_.toBuilder();
+                                }
+                                uuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(uuid_);
+                                    uuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleId_descriptor;
         }
@@ -382,7 +433,7 @@ public final class Policy {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getUuidOrBuilder() {
-            return uuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : uuid_;
+            return getUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -403,7 +454,7 @@ public final class Policy {
             if (uuid_ != null) {
                 output.writeMessage(1, getUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -415,7 +466,7 @@ public final class Policy {
             if (uuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -435,7 +486,7 @@ public final class Policy {
                 if (!getUuid().equals(other.getUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -451,7 +502,7 @@ public final class Policy {
                 hash = (37 * hash) + UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -545,19 +596,26 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                uuid_ = null;
-                if (uuidBuilder_ != null) {
-                    uuidBuilder_.dispose();
+                if (uuidBuilder_ == null) {
+                    uuid_ = null;
+                } else {
+                    uuid_ = null;
                     uuidBuilder_ = null;
                 }
                 return this;
@@ -585,18 +643,43 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleId buildPartial() {
                 policy.Policy.PolicyRuleId result = new policy.Policy.PolicyRuleId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (uuidBuilder_ == null) {
+                    result.uuid_ = uuid_;
+                } else {
+                    result.uuid_ = uuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(policy.Policy.PolicyRuleId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.uuid_ = uuidBuilder_ == null ? uuid_ : uuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -615,7 +698,7 @@ public final class Policy {
                 if (other.hasUuid()) {
                     mergeUuid(other.getUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -627,47 +710,20 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                policy.Policy.PolicyRuleId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (policy.Policy.PolicyRuleId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid uuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> uuidBuilder_;
@@ -677,7 +733,7 @@ public final class Policy {
              * @return Whether the uuid field is set.
              */
             public boolean hasUuid() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return uuidBuilder_ != null || uuid_ != null;
             }
 
             /**
@@ -701,11 +757,10 @@ public final class Policy {
                         throw new NullPointerException();
                     }
                     uuid_ = value;
+                    onChanged();
                 } else {
                     uuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -715,11 +770,10 @@ public final class Policy {
             public Builder setUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (uuidBuilder_ == null) {
                     uuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     uuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -728,16 +782,15 @@ public final class Policy {
              */
             public Builder mergeUuid(context.ContextOuterClass.Uuid value) {
                 if (uuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && uuid_ != null && uuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getUuidBuilder().mergeFrom(value);
+                    if (uuid_ != null) {
+                        uuid_ = context.ContextOuterClass.Uuid.newBuilder(uuid_).mergeFrom(value).buildPartial();
                     } else {
                         uuid_ = value;
                     }
+                    onChanged();
                 } else {
                     uuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -745,13 +798,13 @@ public final class Policy {
              * <code>.context.Uuid uuid = 1;</code>
              */
             public Builder clearUuid() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                uuid_ = null;
-                if (uuidBuilder_ != null) {
-                    uuidBuilder_.dispose();
+                if (uuidBuilder_ == null) {
+                    uuid_ = null;
+                    onChanged();
+                } else {
+                    uuid_ = null;
                     uuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -759,7 +812,6 @@ public final class Policy {
              * <code>.context.Uuid uuid = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getUuidBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getUuidFieldBuilder().getBuilder();
             }
@@ -813,17 +865,7 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new PolicyRuleId(input, extensionRegistry);
             }
         };
 
@@ -894,6 +936,56 @@ public final class Policy {
             return new PolicyRuleState();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private PolicyRuleState(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                policyRuleState_ = rawValue;
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                policyRuleStateMessage_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleState_descriptor;
         }
@@ -905,7 +997,7 @@ public final class Policy {
 
         public static final int POLICYRULESTATE_FIELD_NUMBER = 1;
 
-        private int policyRuleState_ = 0;
+        private int policyRuleState_;
 
         /**
          * <code>.policy.PolicyRuleStateEnum policyRuleState = 1;</code>
@@ -922,14 +1014,14 @@ public final class Policy {
          */
         @java.lang.Override
         public policy.Policy.PolicyRuleStateEnum getPolicyRuleState() {
-            policy.Policy.PolicyRuleStateEnum result = policy.Policy.PolicyRuleStateEnum.forNumber(policyRuleState_);
+            @SuppressWarnings("deprecation")
+            policy.Policy.PolicyRuleStateEnum result = policy.Policy.PolicyRuleStateEnum.valueOf(policyRuleState_);
             return result == null ? policy.Policy.PolicyRuleStateEnum.UNRECOGNIZED : result;
         }
 
         public static final int POLICYRULESTATEMESSAGE_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object policyRuleStateMessage_ = "";
+        private volatile java.lang.Object policyRuleStateMessage_;
 
         /**
          * <code>string policyRuleStateMessage = 2;</code>
@@ -982,10 +1074,10 @@ public final class Policy {
             if (policyRuleState_ != policy.Policy.PolicyRuleStateEnum.POLICY_UNDEFINED.getNumber()) {
                 output.writeEnum(1, policyRuleState_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(policyRuleStateMessage_)) {
+            if (!getPolicyRuleStateMessageBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, policyRuleStateMessage_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -997,10 +1089,10 @@ public final class Policy {
             if (policyRuleState_ != policy.Policy.PolicyRuleStateEnum.POLICY_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, policyRuleState_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(policyRuleStateMessage_)) {
+            if (!getPolicyRuleStateMessageBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, policyRuleStateMessage_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1018,7 +1110,7 @@ public final class Policy {
                 return false;
             if (!getPolicyRuleStateMessage().equals(other.getPolicyRuleStateMessage()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -1034,7 +1126,7 @@ public final class Policy {
             hash = (53 * hash) + policyRuleState_;
             hash = (37 * hash) + POLICYRULESTATEMESSAGE_FIELD_NUMBER;
             hash = (53 * hash) + getPolicyRuleStateMessage().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -1128,16 +1220,22 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleState.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 policyRuleState_ = 0;
                 policyRuleStateMessage_ = "";
                 return this;
@@ -1165,21 +1263,40 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleState buildPartial() {
                 policy.Policy.PolicyRuleState result = new policy.Policy.PolicyRuleState(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.policyRuleState_ = policyRuleState_;
+                result.policyRuleStateMessage_ = policyRuleStateMessage_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(policy.Policy.PolicyRuleState result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.policyRuleState_ = policyRuleState_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.policyRuleStateMessage_ = policyRuleStateMessage_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -1200,10 +1317,9 @@ public final class Policy {
                 }
                 if (!other.getPolicyRuleStateMessage().isEmpty()) {
                     policyRuleStateMessage_ = other.policyRuleStateMessage_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -1215,54 +1331,20 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                policy.Policy.PolicyRuleState parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    policyRuleState_ = input.readEnum();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 18:
-                                {
-                                    policyRuleStateMessage_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (policy.Policy.PolicyRuleState) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int policyRuleState_ = 0;
 
             /**
@@ -1281,7 +1363,6 @@ public final class Policy {
              */
             public Builder setPolicyRuleStateValue(int value) {
                 policyRuleState_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -1292,7 +1373,8 @@ public final class Policy {
              */
             @java.lang.Override
             public policy.Policy.PolicyRuleStateEnum getPolicyRuleState() {
-                policy.Policy.PolicyRuleStateEnum result = policy.Policy.PolicyRuleStateEnum.forNumber(policyRuleState_);
+                @SuppressWarnings("deprecation")
+                policy.Policy.PolicyRuleStateEnum result = policy.Policy.PolicyRuleStateEnum.valueOf(policyRuleState_);
                 return result == null ? policy.Policy.PolicyRuleStateEnum.UNRECOGNIZED : result;
             }
 
@@ -1305,7 +1387,6 @@ public final class Policy {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000001;
                 policyRuleState_ = value.getNumber();
                 onChanged();
                 return this;
@@ -1316,7 +1397,6 @@ public final class Policy {
              * @return This builder for chaining.
              */
             public Builder clearPolicyRuleState() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 policyRuleState_ = 0;
                 onChanged();
                 return this;
@@ -1365,7 +1445,6 @@ public final class Policy {
                     throw new NullPointerException();
                 }
                 policyRuleStateMessage_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1376,7 +1455,6 @@ public final class Policy {
              */
             public Builder clearPolicyRuleStateMessage() {
                 policyRuleStateMessage_ = getDefaultInstance().getPolicyRuleStateMessage();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -1392,7 +1470,6 @@ public final class Policy {
                 }
                 checkByteStringIsUtf8(value);
                 policyRuleStateMessage_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1424,17 +1501,7 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleState parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new PolicyRuleState(input, extensionRegistry);
             }
         };
 
@@ -1648,6 +1715,106 @@ public final class Policy {
             return new PolicyRuleBasic();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private PolicyRuleBasic(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                policy.Policy.PolicyRuleId.Builder subBuilder = null;
+                                if (policyRuleId_ != null) {
+                                    subBuilder = policyRuleId_.toBuilder();
+                                }
+                                policyRuleId_ = input.readMessage(policy.Policy.PolicyRuleId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(policyRuleId_);
+                                    policyRuleId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                policy.Policy.PolicyRuleState.Builder subBuilder = null;
+                                if (policyRuleState_ != null) {
+                                    subBuilder = policyRuleState_.toBuilder();
+                                }
+                                policyRuleState_ = input.readMessage(policy.Policy.PolicyRuleState.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(policyRuleState_);
+                                    policyRuleState_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 24:
+                            {
+                                priority_ = input.readUInt32();
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    conditionList_ = new java.util.ArrayList<policy.PolicyCondition.PolicyRuleCondition>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                conditionList_.add(input.readMessage(policy.PolicyCondition.PolicyRuleCondition.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 40:
+                            {
+                                int rawValue = input.readEnum();
+                                booleanOperator_ = rawValue;
+                                break;
+                            }
+                        case 50:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    actionList_ = new java.util.ArrayList<policy.PolicyAction.PolicyRuleAction>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                actionList_.add(input.readMessage(policy.PolicyAction.PolicyRuleAction.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    conditionList_ = java.util.Collections.unmodifiableList(conditionList_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    actionList_ = java.util.Collections.unmodifiableList(actionList_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleBasic_descriptor;
         }
@@ -1684,7 +1851,7 @@ public final class Policy {
          */
         @java.lang.Override
         public policy.Policy.PolicyRuleIdOrBuilder getPolicyRuleIdOrBuilder() {
-            return policyRuleId_ == null ? policy.Policy.PolicyRuleId.getDefaultInstance() : policyRuleId_;
+            return getPolicyRuleId();
         }
 
         public static final int POLICYRULESTATE_FIELD_NUMBER = 2;
@@ -1726,12 +1893,12 @@ public final class Policy {
          */
         @java.lang.Override
         public policy.Policy.PolicyRuleStateOrBuilder getPolicyRuleStateOrBuilder() {
-            return policyRuleState_ == null ? policy.Policy.PolicyRuleState.getDefaultInstance() : policyRuleState_;
+            return getPolicyRuleState();
         }
 
         public static final int PRIORITY_FIELD_NUMBER = 3;
 
-        private int priority_ = 0;
+        private int priority_;
 
         /**
          * <code>uint32 priority = 3;</code>
@@ -1744,7 +1911,6 @@ public final class Policy {
 
         public static final int CONDITIONLIST_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<policy.PolicyCondition.PolicyRuleCondition> conditionList_;
 
         /**
@@ -1809,7 +1975,7 @@ public final class Policy {
 
         public static final int BOOLEANOPERATOR_FIELD_NUMBER = 5;
 
-        private int booleanOperator_ = 0;
+        private int booleanOperator_;
 
         /**
          * <pre>
@@ -1834,13 +2000,13 @@ public final class Policy {
          */
         @java.lang.Override
         public policy.PolicyCondition.BooleanOperator getBooleanOperator() {
-            policy.PolicyCondition.BooleanOperator result = policy.PolicyCondition.BooleanOperator.forNumber(booleanOperator_);
+            @SuppressWarnings("deprecation")
+            policy.PolicyCondition.BooleanOperator result = policy.PolicyCondition.BooleanOperator.valueOf(booleanOperator_);
             return result == null ? policy.PolicyCondition.BooleanOperator.UNRECOGNIZED : result;
         }
 
         public static final int ACTIONLIST_FIELD_NUMBER = 6;
 
-        @SuppressWarnings("serial")
         private java.util.List<policy.PolicyAction.PolicyRuleAction> actionList_;
 
         /**
@@ -1936,7 +2102,7 @@ public final class Policy {
             for (int i = 0; i < actionList_.size(); i++) {
                 output.writeMessage(6, actionList_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -1963,7 +2129,7 @@ public final class Policy {
             for (int i = 0; i < actionList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, actionList_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1997,7 +2163,7 @@ public final class Policy {
                 return false;
             if (!getActionListList().equals(other.getActionListList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -2029,7 +2195,7 @@ public final class Policy {
                 hash = (37 * hash) + ACTIONLIST_FIELD_NUMBER;
                 hash = (53 * hash) + getActionListList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2127,42 +2293,50 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleBasic.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getConditionListFieldBuilder();
+                    getActionListFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                policyRuleId_ = null;
-                if (policyRuleIdBuilder_ != null) {
-                    policyRuleIdBuilder_.dispose();
+                if (policyRuleIdBuilder_ == null) {
+                    policyRuleId_ = null;
+                } else {
+                    policyRuleId_ = null;
                     policyRuleIdBuilder_ = null;
                 }
-                policyRuleState_ = null;
-                if (policyRuleStateBuilder_ != null) {
-                    policyRuleStateBuilder_.dispose();
+                if (policyRuleStateBuilder_ == null) {
+                    policyRuleState_ = null;
+                } else {
+                    policyRuleState_ = null;
                     policyRuleStateBuilder_ = null;
                 }
                 priority_ = 0;
                 if (conditionListBuilder_ == null) {
                     conditionList_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    conditionList_ = null;
                     conditionListBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
                 booleanOperator_ = 0;
                 if (actionListBuilder_ == null) {
                     actionList_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    actionList_ = null;
                     actionListBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000020);
                 return this;
             }
 
@@ -2188,49 +2362,69 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleBasic buildPartial() {
                 policy.Policy.PolicyRuleBasic result = new policy.Policy.PolicyRuleBasic(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (policyRuleIdBuilder_ == null) {
+                    result.policyRuleId_ = policyRuleId_;
+                } else {
+                    result.policyRuleId_ = policyRuleIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleBasic result) {
+                if (policyRuleStateBuilder_ == null) {
+                    result.policyRuleState_ = policyRuleState_;
+                } else {
+                    result.policyRuleState_ = policyRuleStateBuilder_.build();
+                }
+                result.priority_ = priority_;
                 if (conditionListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         conditionList_ = java.util.Collections.unmodifiableList(conditionList_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.conditionList_ = conditionList_;
                 } else {
                     result.conditionList_ = conditionListBuilder_.build();
                 }
+                result.booleanOperator_ = booleanOperator_;
                 if (actionListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000020) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         actionList_ = java.util.Collections.unmodifiableList(actionList_);
-                        bitField0_ = (bitField0_ & ~0x00000020);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.actionList_ = actionList_;
                 } else {
                     result.actionList_ = actionListBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(policy.Policy.PolicyRuleBasic result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.policyRuleId_ = policyRuleIdBuilder_ == null ? policyRuleId_ : policyRuleIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.policyRuleState_ = policyRuleStateBuilder_ == null ? policyRuleState_ : policyRuleStateBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.priority_ = priority_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.booleanOperator_ = booleanOperator_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -2259,7 +2453,7 @@ public final class Policy {
                     if (!other.conditionList_.isEmpty()) {
                         if (conditionList_.isEmpty()) {
                             conditionList_ = other.conditionList_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureConditionListIsMutable();
                             conditionList_.addAll(other.conditionList_);
@@ -2272,7 +2466,7 @@ public final class Policy {
                             conditionListBuilder_.dispose();
                             conditionListBuilder_ = null;
                             conditionList_ = other.conditionList_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             conditionListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getConditionListFieldBuilder() : null;
                         } else {
                             conditionListBuilder_.addAllMessages(other.conditionList_);
@@ -2286,7 +2480,7 @@ public final class Policy {
                     if (!other.actionList_.isEmpty()) {
                         if (actionList_.isEmpty()) {
                             actionList_ = other.actionList_;
-                            bitField0_ = (bitField0_ & ~0x00000020);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureActionListIsMutable();
                             actionList_.addAll(other.actionList_);
@@ -2299,14 +2493,14 @@ public final class Policy {
                             actionListBuilder_.dispose();
                             actionListBuilder_ = null;
                             actionList_ = other.actionList_;
-                            bitField0_ = (bitField0_ & ~0x00000020);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             actionListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getActionListFieldBuilder() : null;
                         } else {
                             actionListBuilder_.addAllMessages(other.actionList_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -2318,87 +2512,17 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                policy.Policy.PolicyRuleBasic parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getPolicyRuleIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getPolicyRuleStateFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 24:
-                                {
-                                    priority_ = input.readUInt32();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 34:
-                                {
-                                    policy.PolicyCondition.PolicyRuleCondition m = input.readMessage(policy.PolicyCondition.PolicyRuleCondition.parser(), extensionRegistry);
-                                    if (conditionListBuilder_ == null) {
-                                        ensureConditionListIsMutable();
-                                        conditionList_.add(m);
-                                    } else {
-                                        conditionListBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            case 40:
-                                {
-                                    booleanOperator_ = input.readEnum();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 40
-                            case 50:
-                                {
-                                    policy.PolicyAction.PolicyRuleAction m = input.readMessage(policy.PolicyAction.PolicyRuleAction.parser(), extensionRegistry);
-                                    if (actionListBuilder_ == null) {
-                                        ensureActionListIsMutable();
-                                        actionList_.add(m);
-                                    } else {
-                                        actionListBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 50
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (policy.Policy.PolicyRuleBasic) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -2413,7 +2537,7 @@ public final class Policy {
              * @return Whether the policyRuleId field is set.
              */
             public boolean hasPolicyRuleId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return policyRuleIdBuilder_ != null || policyRuleId_ != null;
             }
 
             /**
@@ -2437,11 +2561,10 @@ public final class Policy {
                         throw new NullPointerException();
                     }
                     policyRuleId_ = value;
+                    onChanged();
                 } else {
                     policyRuleIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -2451,11 +2574,10 @@ public final class Policy {
             public Builder setPolicyRuleId(policy.Policy.PolicyRuleId.Builder builderForValue) {
                 if (policyRuleIdBuilder_ == null) {
                     policyRuleId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     policyRuleIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -2464,16 +2586,15 @@ public final class Policy {
              */
             public Builder mergePolicyRuleId(policy.Policy.PolicyRuleId value) {
                 if (policyRuleIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && policyRuleId_ != null && policyRuleId_ != policy.Policy.PolicyRuleId.getDefaultInstance()) {
-                        getPolicyRuleIdBuilder().mergeFrom(value);
+                    if (policyRuleId_ != null) {
+                        policyRuleId_ = policy.Policy.PolicyRuleId.newBuilder(policyRuleId_).mergeFrom(value).buildPartial();
                     } else {
                         policyRuleId_ = value;
                     }
+                    onChanged();
                 } else {
                     policyRuleIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -2481,13 +2602,13 @@ public final class Policy {
              * <code>.policy.PolicyRuleId policyRuleId = 1;</code>
              */
             public Builder clearPolicyRuleId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                policyRuleId_ = null;
-                if (policyRuleIdBuilder_ != null) {
-                    policyRuleIdBuilder_.dispose();
+                if (policyRuleIdBuilder_ == null) {
+                    policyRuleId_ = null;
+                    onChanged();
+                } else {
+                    policyRuleId_ = null;
                     policyRuleIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2495,7 +2616,6 @@ public final class Policy {
              * <code>.policy.PolicyRuleId policyRuleId = 1;</code>
              */
             public policy.Policy.PolicyRuleId.Builder getPolicyRuleIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getPolicyRuleIdFieldBuilder().getBuilder();
             }
@@ -2535,7 +2655,7 @@ public final class Policy {
              *  @return Whether the policyRuleState field is set.
              */
             public boolean hasPolicyRuleState() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return policyRuleStateBuilder_ != null || policyRuleState_ != null;
             }
 
             /**
@@ -2567,11 +2687,10 @@ public final class Policy {
                         throw new NullPointerException();
                     }
                     policyRuleState_ = value;
+                    onChanged();
                 } else {
                     policyRuleStateBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -2585,11 +2704,10 @@ public final class Policy {
             public Builder setPolicyRuleState(policy.Policy.PolicyRuleState.Builder builderForValue) {
                 if (policyRuleStateBuilder_ == null) {
                     policyRuleState_ = builderForValue.build();
+                    onChanged();
                 } else {
                     policyRuleStateBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -2602,16 +2720,15 @@ public final class Policy {
              */
             public Builder mergePolicyRuleState(policy.Policy.PolicyRuleState value) {
                 if (policyRuleStateBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && policyRuleState_ != null && policyRuleState_ != policy.Policy.PolicyRuleState.getDefaultInstance()) {
-                        getPolicyRuleStateBuilder().mergeFrom(value);
+                    if (policyRuleState_ != null) {
+                        policyRuleState_ = policy.Policy.PolicyRuleState.newBuilder(policyRuleState_).mergeFrom(value).buildPartial();
                     } else {
                         policyRuleState_ = value;
                     }
+                    onChanged();
                 } else {
                     policyRuleStateBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -2623,13 +2740,13 @@ public final class Policy {
              *  <code>.policy.PolicyRuleState policyRuleState = 2;</code>
              */
             public Builder clearPolicyRuleState() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                policyRuleState_ = null;
-                if (policyRuleStateBuilder_ != null) {
-                    policyRuleStateBuilder_.dispose();
+                if (policyRuleStateBuilder_ == null) {
+                    policyRuleState_ = null;
+                    onChanged();
+                } else {
+                    policyRuleState_ = null;
                     policyRuleStateBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2641,7 +2758,6 @@ public final class Policy {
              *  <code>.policy.PolicyRuleState policyRuleState = 2;</code>
              */
             public policy.Policy.PolicyRuleState.Builder getPolicyRuleStateBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getPolicyRuleStateFieldBuilder().getBuilder();
             }
@@ -2694,7 +2810,6 @@ public final class Policy {
              */
             public Builder setPriority(int value) {
                 priority_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -2704,7 +2819,6 @@ public final class Policy {
              * @return This builder for chaining.
              */
             public Builder clearPriority() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 priority_ = 0;
                 onChanged();
                 return this;
@@ -2713,9 +2827,9 @@ public final class Policy {
             private java.util.List<policy.PolicyCondition.PolicyRuleCondition> conditionList_ = java.util.Collections.emptyList();
 
             private void ensureConditionListIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     conditionList_ = new java.util.ArrayList<policy.PolicyCondition.PolicyRuleCondition>(conditionList_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -2911,7 +3025,7 @@ public final class Policy {
             public Builder clearConditionList() {
                 if (conditionListBuilder_ == null) {
                     conditionList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     conditionListBuilder_.clear();
@@ -3013,7 +3127,7 @@ public final class Policy {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<policy.PolicyCondition.PolicyRuleCondition, policy.PolicyCondition.PolicyRuleCondition.Builder, policy.PolicyCondition.PolicyRuleConditionOrBuilder> getConditionListFieldBuilder() {
                 if (conditionListBuilder_ == null) {
-                    conditionListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<policy.PolicyCondition.PolicyRuleCondition, policy.PolicyCondition.PolicyRuleCondition.Builder, policy.PolicyCondition.PolicyRuleConditionOrBuilder>(conditionList_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    conditionListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<policy.PolicyCondition.PolicyRuleCondition, policy.PolicyCondition.PolicyRuleCondition.Builder, policy.PolicyCondition.PolicyRuleConditionOrBuilder>(conditionList_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     conditionList_ = null;
                 }
                 return conditionListBuilder_;
@@ -3045,7 +3159,6 @@ public final class Policy {
              */
             public Builder setBooleanOperatorValue(int value) {
                 booleanOperator_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -3060,7 +3173,8 @@ public final class Policy {
              */
             @java.lang.Override
             public policy.PolicyCondition.BooleanOperator getBooleanOperator() {
-                policy.PolicyCondition.BooleanOperator result = policy.PolicyCondition.BooleanOperator.forNumber(booleanOperator_);
+                @SuppressWarnings("deprecation")
+                policy.PolicyCondition.BooleanOperator result = policy.PolicyCondition.BooleanOperator.valueOf(booleanOperator_);
                 return result == null ? policy.PolicyCondition.BooleanOperator.UNRECOGNIZED : result;
             }
 
@@ -3077,7 +3191,6 @@ public final class Policy {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000010;
                 booleanOperator_ = value.getNumber();
                 onChanged();
                 return this;
@@ -3092,7 +3205,6 @@ public final class Policy {
              * @return This builder for chaining.
              */
             public Builder clearBooleanOperator() {
-                bitField0_ = (bitField0_ & ~0x00000010);
                 booleanOperator_ = 0;
                 onChanged();
                 return this;
@@ -3101,9 +3213,9 @@ public final class Policy {
             private java.util.List<policy.PolicyAction.PolicyRuleAction> actionList_ = java.util.Collections.emptyList();
 
             private void ensureActionListIsMutable() {
-                if (!((bitField0_ & 0x00000020) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     actionList_ = new java.util.ArrayList<policy.PolicyAction.PolicyRuleAction>(actionList_);
-                    bitField0_ |= 0x00000020;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -3299,7 +3411,7 @@ public final class Policy {
             public Builder clearActionList() {
                 if (actionListBuilder_ == null) {
                     actionList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000020);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     actionListBuilder_.clear();
@@ -3401,7 +3513,7 @@ public final class Policy {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<policy.PolicyAction.PolicyRuleAction, policy.PolicyAction.PolicyRuleAction.Builder, policy.PolicyAction.PolicyRuleActionOrBuilder> getActionListFieldBuilder() {
                 if (actionListBuilder_ == null) {
-                    actionListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<policy.PolicyAction.PolicyRuleAction, policy.PolicyAction.PolicyRuleAction.Builder, policy.PolicyAction.PolicyRuleActionOrBuilder>(actionList_, ((bitField0_ & 0x00000020) != 0), getParentForChildren(), isClean());
+                    actionListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<policy.PolicyAction.PolicyRuleAction, policy.PolicyAction.PolicyRuleAction.Builder, policy.PolicyAction.PolicyRuleActionOrBuilder>(actionList_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     actionList_ = null;
                 }
                 return actionListBuilder_;
@@ -3434,17 +3546,7 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleBasic parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new PolicyRuleBasic(input, extensionRegistry);
             }
         };
 
@@ -3597,6 +3699,83 @@ public final class Policy {
             return new PolicyRuleService();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private PolicyRuleService(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                policy.Policy.PolicyRuleBasic.Builder subBuilder = null;
+                                if (policyRuleBasic_ != null) {
+                                    subBuilder = policyRuleBasic_.toBuilder();
+                                }
+                                policyRuleBasic_ = input.readMessage(policy.Policy.PolicyRuleBasic.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(policyRuleBasic_);
+                                    policyRuleBasic_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
+                                if (serviceId_ != null) {
+                                    subBuilder = serviceId_.toBuilder();
+                                }
+                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceId_);
+                                    serviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    deviceList_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                deviceList_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    deviceList_ = java.util.Collections.unmodifiableList(deviceList_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleService_descriptor;
         }
@@ -3645,7 +3824,7 @@ public final class Policy {
          */
         @java.lang.Override
         public policy.Policy.PolicyRuleBasicOrBuilder getPolicyRuleBasicOrBuilder() {
-            return policyRuleBasic_ == null ? policy.Policy.PolicyRuleBasic.getDefaultInstance() : policyRuleBasic_;
+            return getPolicyRuleBasic();
         }
 
         public static final int SERVICEID_FIELD_NUMBER = 2;
@@ -3687,12 +3866,11 @@ public final class Policy {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+            return getServiceId();
         }
 
         public static final int DEVICELIST_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.DeviceId> deviceList_;
 
         /**
@@ -3779,7 +3957,7 @@ public final class Policy {
             for (int i = 0; i < deviceList_.size(); i++) {
                 output.writeMessage(3, deviceList_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -3797,7 +3975,7 @@ public final class Policy {
             for (int i = 0; i < deviceList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, deviceList_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -3825,7 +4003,7 @@ public final class Policy {
             }
             if (!getDeviceListList().equals(other.getDeviceListList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -3849,7 +4027,7 @@ public final class Policy {
                 hash = (37 * hash) + DEVICELIST_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceListList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -3947,33 +4125,41 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleService.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDeviceListFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                policyRuleBasic_ = null;
-                if (policyRuleBasicBuilder_ != null) {
-                    policyRuleBasicBuilder_.dispose();
+                if (policyRuleBasicBuilder_ == null) {
+                    policyRuleBasic_ = null;
+                } else {
+                    policyRuleBasic_ = null;
                     policyRuleBasicBuilder_ = null;
                 }
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
                 if (deviceListBuilder_ == null) {
                     deviceList_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    deviceList_ = null;
                     deviceListBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 return this;
             }
 
@@ -3999,34 +4185,58 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleService buildPartial() {
                 policy.Policy.PolicyRuleService result = new policy.Policy.PolicyRuleService(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (policyRuleBasicBuilder_ == null) {
+                    result.policyRuleBasic_ = policyRuleBasic_;
+                } else {
+                    result.policyRuleBasic_ = policyRuleBasicBuilder_.build();
+                }
+                if (serviceIdBuilder_ == null) {
+                    result.serviceId_ = serviceId_;
+                } else {
+                    result.serviceId_ = serviceIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleService result) {
                 if (deviceListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         deviceList_ = java.util.Collections.unmodifiableList(deviceList_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.deviceList_ = deviceList_;
                 } else {
                     result.deviceList_ = deviceListBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(policy.Policy.PolicyRuleService result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.policyRuleBasic_ = policyRuleBasicBuilder_ == null ? policyRuleBasic_ : policyRuleBasicBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -4052,7 +4262,7 @@ public final class Policy {
                     if (!other.deviceList_.isEmpty()) {
                         if (deviceList_.isEmpty()) {
                             deviceList_ = other.deviceList_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureDeviceListIsMutable();
                             deviceList_.addAll(other.deviceList_);
@@ -4065,14 +4275,14 @@ public final class Policy {
                             deviceListBuilder_.dispose();
                             deviceListBuilder_ = null;
                             deviceList_ = other.deviceList_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             deviceListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceListFieldBuilder() : null;
                         } else {
                             deviceListBuilder_.addAllMessages(other.deviceList_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -4084,61 +4294,17 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                policy.Policy.PolicyRuleService parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getPolicyRuleBasicFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-                                    if (deviceListBuilder_ == null) {
-                                        ensureDeviceListIsMutable();
-                                        deviceList_.add(m);
-                                    } else {
-                                        deviceListBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (policy.Policy.PolicyRuleService) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -4157,7 +4323,7 @@ public final class Policy {
              * @return Whether the policyRuleBasic field is set.
              */
             public boolean hasPolicyRuleBasic() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return policyRuleBasicBuilder_ != null || policyRuleBasic_ != null;
             }
 
             /**
@@ -4189,11 +4355,10 @@ public final class Policy {
                         throw new NullPointerException();
                     }
                     policyRuleBasic_ = value;
+                    onChanged();
                 } else {
                     policyRuleBasicBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -4207,11 +4372,10 @@ public final class Policy {
             public Builder setPolicyRuleBasic(policy.Policy.PolicyRuleBasic.Builder builderForValue) {
                 if (policyRuleBasicBuilder_ == null) {
                     policyRuleBasic_ = builderForValue.build();
+                    onChanged();
                 } else {
                     policyRuleBasicBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -4224,16 +4388,15 @@ public final class Policy {
              */
             public Builder mergePolicyRuleBasic(policy.Policy.PolicyRuleBasic value) {
                 if (policyRuleBasicBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && policyRuleBasic_ != null && policyRuleBasic_ != policy.Policy.PolicyRuleBasic.getDefaultInstance()) {
-                        getPolicyRuleBasicBuilder().mergeFrom(value);
+                    if (policyRuleBasic_ != null) {
+                        policyRuleBasic_ = policy.Policy.PolicyRuleBasic.newBuilder(policyRuleBasic_).mergeFrom(value).buildPartial();
                     } else {
                         policyRuleBasic_ = value;
                     }
+                    onChanged();
                 } else {
                     policyRuleBasicBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -4245,13 +4408,13 @@ public final class Policy {
              * <code>.policy.PolicyRuleBasic policyRuleBasic = 1;</code>
              */
             public Builder clearPolicyRuleBasic() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                policyRuleBasic_ = null;
-                if (policyRuleBasicBuilder_ != null) {
-                    policyRuleBasicBuilder_.dispose();
+                if (policyRuleBasicBuilder_ == null) {
+                    policyRuleBasic_ = null;
+                    onChanged();
+                } else {
+                    policyRuleBasic_ = null;
                     policyRuleBasicBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -4263,7 +4426,6 @@ public final class Policy {
              * <code>.policy.PolicyRuleBasic policyRuleBasic = 1;</code>
              */
             public policy.Policy.PolicyRuleBasic.Builder getPolicyRuleBasicBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getPolicyRuleBasicFieldBuilder().getBuilder();
             }
@@ -4311,7 +4473,7 @@ public final class Policy {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return serviceIdBuilder_ != null || serviceId_ != null;
             }
 
             /**
@@ -4343,11 +4505,10 @@ public final class Policy {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -4361,11 +4522,10 @@ public final class Policy {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -4378,16 +4538,15 @@ public final class Policy {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
-                        getServiceIdBuilder().mergeFrom(value);
+                    if (serviceId_ != null) {
+                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
                     } else {
                         serviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -4399,13 +4558,13 @@ public final class Policy {
              * <code>.context.ServiceId serviceId = 2;</code>
              */
             public Builder clearServiceId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                    onChanged();
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -4417,7 +4576,6 @@ public final class Policy {
              * <code>.context.ServiceId serviceId = 2;</code>
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -4455,9 +4613,9 @@ public final class Policy {
             private java.util.List<context.ContextOuterClass.DeviceId> deviceList_ = java.util.Collections.emptyList();
 
             private void ensureDeviceListIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     deviceList_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceList_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -4653,7 +4811,7 @@ public final class Policy {
             public Builder clearDeviceList() {
                 if (deviceListBuilder_ == null) {
                     deviceList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     deviceListBuilder_.clear();
@@ -4755,7 +4913,7 @@ public final class Policy {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceListFieldBuilder() {
                 if (deviceListBuilder_ == null) {
-                    deviceListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceList_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    deviceListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceList_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     deviceList_ = null;
                 }
                 return deviceListBuilder_;
@@ -4788,17 +4946,7 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleService parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new PolicyRuleService(input, extensionRegistry);
             }
         };
 
@@ -4922,6 +5070,70 @@ public final class Policy {
             return new PolicyRuleDevice();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private PolicyRuleDevice(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                policy.Policy.PolicyRuleBasic.Builder subBuilder = null;
+                                if (policyRuleBasic_ != null) {
+                                    subBuilder = policyRuleBasic_.toBuilder();
+                                }
+                                policyRuleBasic_ = input.readMessage(policy.Policy.PolicyRuleBasic.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(policyRuleBasic_);
+                                    policyRuleBasic_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    deviceList_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                deviceList_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    deviceList_ = java.util.Collections.unmodifiableList(deviceList_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleDevice_descriptor;
         }
@@ -4970,12 +5182,11 @@ public final class Policy {
          */
         @java.lang.Override
         public policy.Policy.PolicyRuleBasicOrBuilder getPolicyRuleBasicOrBuilder() {
-            return policyRuleBasic_ == null ? policy.Policy.PolicyRuleBasic.getDefaultInstance() : policyRuleBasic_;
+            return getPolicyRuleBasic();
         }
 
         public static final int DEVICELIST_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.DeviceId> deviceList_;
 
         /**
@@ -5059,7 +5270,7 @@ public final class Policy {
             for (int i = 0; i < deviceList_.size(); i++) {
                 output.writeMessage(2, deviceList_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -5074,7 +5285,7 @@ public final class Policy {
             for (int i = 0; i < deviceList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, deviceList_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -5096,7 +5307,7 @@ public final class Policy {
             }
             if (!getDeviceListList().equals(other.getDeviceListList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -5116,7 +5327,7 @@ public final class Policy {
                 hash = (37 * hash) + DEVICELIST_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceListList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -5214,28 +5425,35 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleDevice.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDeviceListFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                policyRuleBasic_ = null;
-                if (policyRuleBasicBuilder_ != null) {
-                    policyRuleBasicBuilder_.dispose();
+                if (policyRuleBasicBuilder_ == null) {
+                    policyRuleBasic_ = null;
+                } else {
+                    policyRuleBasic_ = null;
                     policyRuleBasicBuilder_ = null;
                 }
                 if (deviceListBuilder_ == null) {
                     deviceList_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    deviceList_ = null;
                     deviceListBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000002);
                 return this;
             }
 
@@ -5261,31 +5479,53 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleDevice buildPartial() {
                 policy.Policy.PolicyRuleDevice result = new policy.Policy.PolicyRuleDevice(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (policyRuleBasicBuilder_ == null) {
+                    result.policyRuleBasic_ = policyRuleBasic_;
+                } else {
+                    result.policyRuleBasic_ = policyRuleBasicBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleDevice result) {
                 if (deviceListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         deviceList_ = java.util.Collections.unmodifiableList(deviceList_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.deviceList_ = deviceList_;
                 } else {
                     result.deviceList_ = deviceListBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(policy.Policy.PolicyRuleDevice result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.policyRuleBasic_ = policyRuleBasicBuilder_ == null ? policyRuleBasic_ : policyRuleBasicBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -5308,7 +5548,7 @@ public final class Policy {
                     if (!other.deviceList_.isEmpty()) {
                         if (deviceList_.isEmpty()) {
                             deviceList_ = other.deviceList_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureDeviceListIsMutable();
                             deviceList_.addAll(other.deviceList_);
@@ -5321,14 +5561,14 @@ public final class Policy {
                             deviceListBuilder_.dispose();
                             deviceListBuilder_ = null;
                             deviceList_ = other.deviceList_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             deviceListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceListFieldBuilder() : null;
                         } else {
                             deviceListBuilder_.addAllMessages(other.deviceList_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -5340,54 +5580,17 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                policy.Policy.PolicyRuleDevice parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getPolicyRuleBasicFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-                                    if (deviceListBuilder_ == null) {
-                                        ensureDeviceListIsMutable();
-                                        deviceList_.add(m);
-                                    } else {
-                                        deviceListBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (policy.Policy.PolicyRuleDevice) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -5406,7 +5609,7 @@ public final class Policy {
              * @return Whether the policyRuleBasic field is set.
              */
             public boolean hasPolicyRuleBasic() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return policyRuleBasicBuilder_ != null || policyRuleBasic_ != null;
             }
 
             /**
@@ -5438,11 +5641,10 @@ public final class Policy {
                         throw new NullPointerException();
                     }
                     policyRuleBasic_ = value;
+                    onChanged();
                 } else {
                     policyRuleBasicBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5456,11 +5658,10 @@ public final class Policy {
             public Builder setPolicyRuleBasic(policy.Policy.PolicyRuleBasic.Builder builderForValue) {
                 if (policyRuleBasicBuilder_ == null) {
                     policyRuleBasic_ = builderForValue.build();
+                    onChanged();
                 } else {
                     policyRuleBasicBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5473,16 +5674,15 @@ public final class Policy {
              */
             public Builder mergePolicyRuleBasic(policy.Policy.PolicyRuleBasic value) {
                 if (policyRuleBasicBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && policyRuleBasic_ != null && policyRuleBasic_ != policy.Policy.PolicyRuleBasic.getDefaultInstance()) {
-                        getPolicyRuleBasicBuilder().mergeFrom(value);
+                    if (policyRuleBasic_ != null) {
+                        policyRuleBasic_ = policy.Policy.PolicyRuleBasic.newBuilder(policyRuleBasic_).mergeFrom(value).buildPartial();
                     } else {
                         policyRuleBasic_ = value;
                     }
+                    onChanged();
                 } else {
                     policyRuleBasicBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5494,13 +5694,13 @@ public final class Policy {
              * <code>.policy.PolicyRuleBasic policyRuleBasic = 1;</code>
              */
             public Builder clearPolicyRuleBasic() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                policyRuleBasic_ = null;
-                if (policyRuleBasicBuilder_ != null) {
-                    policyRuleBasicBuilder_.dispose();
+                if (policyRuleBasicBuilder_ == null) {
+                    policyRuleBasic_ = null;
+                    onChanged();
+                } else {
+                    policyRuleBasic_ = null;
                     policyRuleBasicBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -5512,7 +5712,6 @@ public final class Policy {
              * <code>.policy.PolicyRuleBasic policyRuleBasic = 1;</code>
              */
             public policy.Policy.PolicyRuleBasic.Builder getPolicyRuleBasicBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getPolicyRuleBasicFieldBuilder().getBuilder();
             }
@@ -5550,9 +5749,9 @@ public final class Policy {
             private java.util.List<context.ContextOuterClass.DeviceId> deviceList_ = java.util.Collections.emptyList();
 
             private void ensureDeviceListIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     deviceList_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceList_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -5748,7 +5947,7 @@ public final class Policy {
             public Builder clearDeviceList() {
                 if (deviceListBuilder_ == null) {
                     deviceList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     deviceListBuilder_.clear();
@@ -5850,7 +6049,7 @@ public final class Policy {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceListFieldBuilder() {
                 if (deviceListBuilder_ == null) {
-                    deviceListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceList_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    deviceListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceList_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     deviceList_ = null;
                 }
                 return deviceListBuilder_;
@@ -5883,17 +6082,7 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleDevice parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new PolicyRuleDevice(input, extensionRegistry);
             }
         };
 
@@ -5949,7 +6138,7 @@ public final class Policy {
          */
         policy.Policy.PolicyRuleDeviceOrBuilder getDeviceOrBuilder();
 
-        policy.Policy.PolicyRule.PolicyRuleCase getPolicyRuleCase();
+        public policy.Policy.PolicyRule.PolicyRuleCase getPolicyRuleCase();
     }
 
     /**
@@ -5978,6 +6167,72 @@ public final class Policy {
             return new PolicyRule();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private PolicyRule(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                policy.Policy.PolicyRuleService.Builder subBuilder = null;
+                                if (policyRuleCase_ == 1) {
+                                    subBuilder = ((policy.Policy.PolicyRuleService) policyRule_).toBuilder();
+                                }
+                                policyRule_ = input.readMessage(policy.Policy.PolicyRuleService.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((policy.Policy.PolicyRuleService) policyRule_);
+                                    policyRule_ = subBuilder.buildPartial();
+                                }
+                                policyRuleCase_ = 1;
+                                break;
+                            }
+                        case 18:
+                            {
+                                policy.Policy.PolicyRuleDevice.Builder subBuilder = null;
+                                if (policyRuleCase_ == 2) {
+                                    subBuilder = ((policy.Policy.PolicyRuleDevice) policyRule_).toBuilder();
+                                }
+                                policyRule_ = input.readMessage(policy.Policy.PolicyRuleDevice.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((policy.Policy.PolicyRuleDevice) policyRule_);
+                                    policyRule_ = subBuilder.buildPartial();
+                                }
+                                policyRuleCase_ = 2;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRule_descriptor;
         }
@@ -5989,7 +6244,6 @@ public final class Policy {
 
         private int policyRuleCase_ = 0;
 
-        @SuppressWarnings("serial")
         private java.lang.Object policyRule_;
 
         public enum PolicyRuleCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -6123,7 +6377,7 @@ public final class Policy {
             if (policyRuleCase_ == 2) {
                 output.writeMessage(2, (policy.Policy.PolicyRuleDevice) policyRule_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -6138,7 +6392,7 @@ public final class Policy {
             if (policyRuleCase_ == 2) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (policy.Policy.PolicyRuleDevice) policyRule_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -6166,7 +6420,7 @@ public final class Policy {
                 case 0:
                 default:
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -6190,7 +6444,7 @@ public final class Policy {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -6288,22 +6542,22 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRule.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                if (serviceBuilder_ != null) {
-                    serviceBuilder_.clear();
-                }
-                if (deviceBuilder_ != null) {
-                    deviceBuilder_.clear();
-                }
                 policyRuleCase_ = 0;
                 policyRule_ = null;
                 return this;
@@ -6329,29 +6583,55 @@ public final class Policy {
             }
 
             @java.lang.Override
-            public policy.Policy.PolicyRule buildPartial() {
-                policy.Policy.PolicyRule result = new policy.Policy.PolicyRule(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                buildPartialOneofs(result);
-                onBuilt();
-                return result;
+            public policy.Policy.PolicyRule buildPartial() {
+                policy.Policy.PolicyRule result = new policy.Policy.PolicyRule(this);
+                if (policyRuleCase_ == 1) {
+                    if (serviceBuilder_ == null) {
+                        result.policyRule_ = policyRule_;
+                    } else {
+                        result.policyRule_ = serviceBuilder_.build();
+                    }
+                }
+                if (policyRuleCase_ == 2) {
+                    if (deviceBuilder_ == null) {
+                        result.policyRule_ = policyRule_;
+                    } else {
+                        result.policyRule_ = deviceBuilder_.build();
+                    }
+                }
+                result.policyRuleCase_ = policyRuleCase_;
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
             }
 
-            private void buildPartial0(policy.Policy.PolicyRule result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
             }
 
-            private void buildPartialOneofs(policy.Policy.PolicyRule result) {
-                result.policyRuleCase_ = policyRuleCase_;
-                result.policyRule_ = this.policyRule_;
-                if (policyRuleCase_ == 1 && serviceBuilder_ != null) {
-                    result.policyRule_ = serviceBuilder_.build();
-                }
-                if (policyRuleCase_ == 2 && deviceBuilder_ != null) {
-                    result.policyRule_ = deviceBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -6383,7 +6663,7 @@ public final class Policy {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -6395,49 +6675,17 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                policy.Policy.PolicyRule parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getServiceFieldBuilder().getBuilder(), extensionRegistry);
-                                    policyRuleCase_ = 1;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getDeviceFieldBuilder().getBuilder(), extensionRegistry);
-                                    policyRuleCase_ = 2;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (policy.Policy.PolicyRule) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -6456,8 +6704,6 @@ public final class Policy {
                 return this;
             }
 
-            private int bitField0_;
-
             private com.google.protobuf.SingleFieldBuilderV3<policy.Policy.PolicyRuleService, policy.Policy.PolicyRuleService.Builder, policy.Policy.PolicyRuleServiceOrBuilder> serviceBuilder_;
 
             /**
@@ -6533,9 +6779,8 @@ public final class Policy {
                 } else {
                     if (policyRuleCase_ == 1) {
                         serviceBuilder_.mergeFrom(value);
-                    } else {
-                        serviceBuilder_.setMessage(value);
                     }
+                    serviceBuilder_.setMessage(value);
                 }
                 policyRuleCase_ = 1;
                 return this;
@@ -6596,6 +6841,7 @@ public final class Policy {
                 }
                 policyRuleCase_ = 1;
                 onChanged();
+                ;
                 return serviceBuilder_;
             }
 
@@ -6674,9 +6920,8 @@ public final class Policy {
                 } else {
                     if (policyRuleCase_ == 2) {
                         deviceBuilder_.mergeFrom(value);
-                    } else {
-                        deviceBuilder_.setMessage(value);
                     }
+                    deviceBuilder_.setMessage(value);
                 }
                 policyRuleCase_ = 2;
                 return this;
@@ -6737,6 +6982,7 @@ public final class Policy {
                 }
                 policyRuleCase_ = 2;
                 onChanged();
+                ;
                 return deviceBuilder_;
             }
 
@@ -6767,17 +7013,7 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new PolicyRule(input, extensionRegistry);
             }
         };
 
@@ -6852,6 +7088,57 @@ public final class Policy {
             return new PolicyRuleIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private PolicyRuleIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    policyRuleIdList_ = new java.util.ArrayList<policy.Policy.PolicyRuleId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                policyRuleIdList_.add(input.readMessage(policy.Policy.PolicyRuleId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    policyRuleIdList_ = java.util.Collections.unmodifiableList(policyRuleIdList_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleIdList_descriptor;
         }
@@ -6863,7 +7150,6 @@ public final class Policy {
 
         public static final int POLICYRULEIDLIST_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<policy.Policy.PolicyRuleId> policyRuleIdList_;
 
         /**
@@ -6924,7 +7210,7 @@ public final class Policy {
             for (int i = 0; i < policyRuleIdList_.size(); i++) {
                 output.writeMessage(1, policyRuleIdList_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -6936,7 +7222,7 @@ public final class Policy {
             for (int i = 0; i < policyRuleIdList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, policyRuleIdList_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -6952,7 +7238,7 @@ public final class Policy {
             policy.Policy.PolicyRuleIdList other = (policy.Policy.PolicyRuleIdList) obj;
             if (!getPolicyRuleIdListList().equals(other.getPolicyRuleIdListList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -6968,7 +7254,7 @@ public final class Policy {
                 hash = (37 * hash) + POLICYRULEIDLIST_FIELD_NUMBER;
                 hash = (53 * hash) + getPolicyRuleIdListList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -7066,23 +7352,29 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getPolicyRuleIdListFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (policyRuleIdListBuilder_ == null) {
                     policyRuleIdList_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    policyRuleIdList_ = null;
                     policyRuleIdListBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -7108,15 +7400,7 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleIdList buildPartial() {
                 policy.Policy.PolicyRuleIdList result = new policy.Policy.PolicyRuleIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (policyRuleIdListBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         policyRuleIdList_ = java.util.Collections.unmodifiableList(policyRuleIdList_);
@@ -7126,10 +7410,38 @@ public final class Policy {
                 } else {
                     result.policyRuleIdList_ = policyRuleIdListBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(policy.Policy.PolicyRuleIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -7169,7 +7481,7 @@ public final class Policy {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -7181,47 +7493,17 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                policy.Policy.PolicyRuleIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    policy.Policy.PolicyRuleId m = input.readMessage(policy.Policy.PolicyRuleId.parser(), extensionRegistry);
-                                    if (policyRuleIdListBuilder_ == null) {
-                                        ensurePolicyRuleIdListIsMutable();
-                                        policyRuleIdList_.add(m);
-                                    } else {
-                                        policyRuleIdListBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (policy.Policy.PolicyRuleIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -7491,17 +7773,7 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new PolicyRuleIdList(input, extensionRegistry);
             }
         };
 
@@ -7576,6 +7848,57 @@ public final class Policy {
             return new PolicyRuleServiceList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private PolicyRuleServiceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    policyRuleServiceList_ = new java.util.ArrayList<policy.Policy.PolicyRuleService>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                policyRuleServiceList_.add(input.readMessage(policy.Policy.PolicyRuleService.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    policyRuleServiceList_ = java.util.Collections.unmodifiableList(policyRuleServiceList_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleServiceList_descriptor;
         }
@@ -7587,7 +7910,6 @@ public final class Policy {
 
         public static final int POLICYRULESERVICELIST_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<policy.Policy.PolicyRuleService> policyRuleServiceList_;
 
         /**
@@ -7648,7 +7970,7 @@ public final class Policy {
             for (int i = 0; i < policyRuleServiceList_.size(); i++) {
                 output.writeMessage(1, policyRuleServiceList_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -7660,7 +7982,7 @@ public final class Policy {
             for (int i = 0; i < policyRuleServiceList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, policyRuleServiceList_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -7676,7 +7998,7 @@ public final class Policy {
             policy.Policy.PolicyRuleServiceList other = (policy.Policy.PolicyRuleServiceList) obj;
             if (!getPolicyRuleServiceListList().equals(other.getPolicyRuleServiceListList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -7692,7 +8014,7 @@ public final class Policy {
                 hash = (37 * hash) + POLICYRULESERVICELIST_FIELD_NUMBER;
                 hash = (53 * hash) + getPolicyRuleServiceListList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -7790,23 +8112,29 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleServiceList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getPolicyRuleServiceListFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (policyRuleServiceListBuilder_ == null) {
                     policyRuleServiceList_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    policyRuleServiceList_ = null;
                     policyRuleServiceListBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -7832,15 +8160,7 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleServiceList buildPartial() {
                 policy.Policy.PolicyRuleServiceList result = new policy.Policy.PolicyRuleServiceList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleServiceList result) {
+                int from_bitField0_ = bitField0_;
                 if (policyRuleServiceListBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         policyRuleServiceList_ = java.util.Collections.unmodifiableList(policyRuleServiceList_);
@@ -7850,10 +8170,38 @@ public final class Policy {
                 } else {
                     result.policyRuleServiceList_ = policyRuleServiceListBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(policy.Policy.PolicyRuleServiceList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -7893,7 +8241,7 @@ public final class Policy {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -7905,47 +8253,17 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                policy.Policy.PolicyRuleServiceList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    policy.Policy.PolicyRuleService m = input.readMessage(policy.Policy.PolicyRuleService.parser(), extensionRegistry);
-                                    if (policyRuleServiceListBuilder_ == null) {
-                                        ensurePolicyRuleServiceListIsMutable();
-                                        policyRuleServiceList_.add(m);
-                                    } else {
-                                        policyRuleServiceListBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (policy.Policy.PolicyRuleServiceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -8215,17 +8533,7 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleServiceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new PolicyRuleServiceList(input, extensionRegistry);
             }
         };
 
@@ -8300,6 +8608,57 @@ public final class Policy {
             return new PolicyRuleDeviceList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private PolicyRuleDeviceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    policyRuleDeviceList_ = new java.util.ArrayList<policy.Policy.PolicyRuleDevice>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                policyRuleDeviceList_.add(input.readMessage(policy.Policy.PolicyRuleDevice.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    policyRuleDeviceList_ = java.util.Collections.unmodifiableList(policyRuleDeviceList_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleDeviceList_descriptor;
         }
@@ -8311,7 +8670,6 @@ public final class Policy {
 
         public static final int POLICYRULEDEVICELIST_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<policy.Policy.PolicyRuleDevice> policyRuleDeviceList_;
 
         /**
@@ -8372,7 +8730,7 @@ public final class Policy {
             for (int i = 0; i < policyRuleDeviceList_.size(); i++) {
                 output.writeMessage(1, policyRuleDeviceList_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -8384,7 +8742,7 @@ public final class Policy {
             for (int i = 0; i < policyRuleDeviceList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, policyRuleDeviceList_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -8400,7 +8758,7 @@ public final class Policy {
             policy.Policy.PolicyRuleDeviceList other = (policy.Policy.PolicyRuleDeviceList) obj;
             if (!getPolicyRuleDeviceListList().equals(other.getPolicyRuleDeviceListList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -8416,7 +8774,7 @@ public final class Policy {
                 hash = (37 * hash) + POLICYRULEDEVICELIST_FIELD_NUMBER;
                 hash = (53 * hash) + getPolicyRuleDeviceListList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -8514,23 +8872,29 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleDeviceList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getPolicyRuleDeviceListFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (policyRuleDeviceListBuilder_ == null) {
                     policyRuleDeviceList_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    policyRuleDeviceList_ = null;
                     policyRuleDeviceListBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -8556,15 +8920,7 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleDeviceList buildPartial() {
                 policy.Policy.PolicyRuleDeviceList result = new policy.Policy.PolicyRuleDeviceList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleDeviceList result) {
+                int from_bitField0_ = bitField0_;
                 if (policyRuleDeviceListBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         policyRuleDeviceList_ = java.util.Collections.unmodifiableList(policyRuleDeviceList_);
@@ -8574,10 +8930,38 @@ public final class Policy {
                 } else {
                     result.policyRuleDeviceList_ = policyRuleDeviceListBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(policy.Policy.PolicyRuleDeviceList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -8617,7 +9001,7 @@ public final class Policy {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -8629,47 +9013,17 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                policy.Policy.PolicyRuleDeviceList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    policy.Policy.PolicyRuleDevice m = input.readMessage(policy.Policy.PolicyRuleDevice.parser(), extensionRegistry);
-                                    if (policyRuleDeviceListBuilder_ == null) {
-                                        ensurePolicyRuleDeviceListIsMutable();
-                                        policyRuleDeviceList_.add(m);
-                                    } else {
-                                        policyRuleDeviceListBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (policy.Policy.PolicyRuleDeviceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -8939,17 +9293,7 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleDeviceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new PolicyRuleDeviceList(input, extensionRegistry);
             }
         };
 
@@ -9024,6 +9368,57 @@ public final class Policy {
             return new PolicyRuleList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private PolicyRuleList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    policyRules_ = new java.util.ArrayList<policy.Policy.PolicyRule>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                policyRules_.add(input.readMessage(policy.Policy.PolicyRule.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    policyRules_ = java.util.Collections.unmodifiableList(policyRules_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.Policy.internal_static_policy_PolicyRuleList_descriptor;
         }
@@ -9035,7 +9430,6 @@ public final class Policy {
 
         public static final int POLICYRULES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<policy.Policy.PolicyRule> policyRules_;
 
         /**
@@ -9096,7 +9490,7 @@ public final class Policy {
             for (int i = 0; i < policyRules_.size(); i++) {
                 output.writeMessage(1, policyRules_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -9108,7 +9502,7 @@ public final class Policy {
             for (int i = 0; i < policyRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, policyRules_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -9124,7 +9518,7 @@ public final class Policy {
             policy.Policy.PolicyRuleList other = (policy.Policy.PolicyRuleList) obj;
             if (!getPolicyRulesList().equals(other.getPolicyRulesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -9140,7 +9534,7 @@ public final class Policy {
                 hash = (37 * hash) + POLICYRULES_FIELD_NUMBER;
                 hash = (53 * hash) + getPolicyRulesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -9238,23 +9632,29 @@ public final class Policy {
 
             // Construct using policy.Policy.PolicyRuleList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getPolicyRulesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (policyRulesBuilder_ == null) {
                     policyRules_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    policyRules_ = null;
                     policyRulesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -9280,15 +9680,7 @@ public final class Policy {
             @java.lang.Override
             public policy.Policy.PolicyRuleList buildPartial() {
                 policy.Policy.PolicyRuleList result = new policy.Policy.PolicyRuleList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(policy.Policy.PolicyRuleList result) {
+                int from_bitField0_ = bitField0_;
                 if (policyRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         policyRules_ = java.util.Collections.unmodifiableList(policyRules_);
@@ -9298,10 +9690,38 @@ public final class Policy {
                 } else {
                     result.policyRules_ = policyRulesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(policy.Policy.PolicyRuleList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -9341,7 +9761,7 @@ public final class Policy {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -9353,47 +9773,17 @@ public final class Policy {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                policy.Policy.PolicyRuleList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    policy.Policy.PolicyRule m = input.readMessage(policy.Policy.PolicyRule.parser(), extensionRegistry);
-                                    if (policyRulesBuilder_ == null) {
-                                        ensurePolicyRulesIsMutable();
-                                        policyRules_.add(m);
-                                    } else {
-                                        policyRulesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (policy.Policy.PolicyRuleList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -9663,17 +10053,7 @@ public final class Policy {
 
             @java.lang.Override
             public PolicyRuleList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new PolicyRuleList(input, extensionRegistry);
             }
         };
 
diff --git a/src/policy/target/generated-sources/grpc/policy/PolicyAction.java b/src/policy/target/generated-sources/grpc/policy/PolicyAction.java
index 097097d6f7f65512938dd8898e3f1f9b3191d2f1..8e84a0a847d93bd2dd863244ef7acf3888f6e6c5 100644
--- a/src/policy/target/generated-sources/grpc/policy/PolicyAction.java
+++ b/src/policy/target/generated-sources/grpc/policy/PolicyAction.java
@@ -229,6 +229,63 @@ public final class PolicyAction {
             return new PolicyRuleAction();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private PolicyRuleAction(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                action_ = rawValue;
+                                break;
+                            }
+                        case 18:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    actionConfig_ = new java.util.ArrayList<policy.PolicyAction.PolicyRuleActionConfig>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                actionConfig_.add(input.readMessage(policy.PolicyAction.PolicyRuleActionConfig.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    actionConfig_ = java.util.Collections.unmodifiableList(actionConfig_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.PolicyAction.internal_static_policy_PolicyRuleAction_descriptor;
         }
@@ -240,7 +297,7 @@ public final class PolicyAction {
 
         public static final int ACTION_FIELD_NUMBER = 1;
 
-        private int action_ = 0;
+        private int action_;
 
         /**
          * <code>.policy.PolicyRuleActionEnum action = 1;</code>
@@ -257,13 +314,13 @@ public final class PolicyAction {
          */
         @java.lang.Override
         public policy.PolicyAction.PolicyRuleActionEnum getAction() {
-            policy.PolicyAction.PolicyRuleActionEnum result = policy.PolicyAction.PolicyRuleActionEnum.forNumber(action_);
+            @SuppressWarnings("deprecation")
+            policy.PolicyAction.PolicyRuleActionEnum result = policy.PolicyAction.PolicyRuleActionEnum.valueOf(action_);
             return result == null ? policy.PolicyAction.PolicyRuleActionEnum.UNRECOGNIZED : result;
         }
 
         public static final int ACTION_CONFIG_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
         private java.util.List<policy.PolicyAction.PolicyRuleActionConfig> actionConfig_;
 
         /**
@@ -327,7 +384,7 @@ public final class PolicyAction {
             for (int i = 0; i < actionConfig_.size(); i++) {
                 output.writeMessage(2, actionConfig_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -342,7 +399,7 @@ public final class PolicyAction {
             for (int i = 0; i < actionConfig_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, actionConfig_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -360,7 +417,7 @@ public final class PolicyAction {
                 return false;
             if (!getActionConfigList().equals(other.getActionConfigList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -378,7 +435,7 @@ public final class PolicyAction {
                 hash = (37 * hash) + ACTION_CONFIG_FIELD_NUMBER;
                 hash = (53 * hash) + getActionConfigList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -476,24 +533,30 @@ public final class PolicyAction {
 
             // Construct using policy.PolicyAction.PolicyRuleAction.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getActionConfigFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 action_ = 0;
                 if (actionConfigBuilder_ == null) {
                     actionConfig_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    actionConfig_ = null;
                     actionConfigBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000002);
                 return this;
             }
 
@@ -519,31 +582,49 @@ public final class PolicyAction {
             @java.lang.Override
             public policy.PolicyAction.PolicyRuleAction buildPartial() {
                 policy.PolicyAction.PolicyRuleAction result = new policy.PolicyAction.PolicyRuleAction(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(policy.PolicyAction.PolicyRuleAction result) {
+                int from_bitField0_ = bitField0_;
+                result.action_ = action_;
                 if (actionConfigBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         actionConfig_ = java.util.Collections.unmodifiableList(actionConfig_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.actionConfig_ = actionConfig_;
                 } else {
                     result.actionConfig_ = actionConfigBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(policy.PolicyAction.PolicyRuleAction result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.action_ = action_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -566,7 +647,7 @@ public final class PolicyAction {
                     if (!other.actionConfig_.isEmpty()) {
                         if (actionConfig_.isEmpty()) {
                             actionConfig_ = other.actionConfig_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureActionConfigIsMutable();
                             actionConfig_.addAll(other.actionConfig_);
@@ -579,14 +660,14 @@ public final class PolicyAction {
                             actionConfigBuilder_.dispose();
                             actionConfigBuilder_ = null;
                             actionConfig_ = other.actionConfig_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             actionConfigBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getActionConfigFieldBuilder() : null;
                         } else {
                             actionConfigBuilder_.addAllMessages(other.actionConfig_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -598,54 +679,17 @@ public final class PolicyAction {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                policy.PolicyAction.PolicyRuleAction parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    action_ = input.readEnum();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 18:
-                                {
-                                    policy.PolicyAction.PolicyRuleActionConfig m = input.readMessage(policy.PolicyAction.PolicyRuleActionConfig.parser(), extensionRegistry);
-                                    if (actionConfigBuilder_ == null) {
-                                        ensureActionConfigIsMutable();
-                                        actionConfig_.add(m);
-                                    } else {
-                                        actionConfigBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (policy.PolicyAction.PolicyRuleAction) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -669,7 +713,6 @@ public final class PolicyAction {
              */
             public Builder setActionValue(int value) {
                 action_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -680,7 +723,8 @@ public final class PolicyAction {
              */
             @java.lang.Override
             public policy.PolicyAction.PolicyRuleActionEnum getAction() {
-                policy.PolicyAction.PolicyRuleActionEnum result = policy.PolicyAction.PolicyRuleActionEnum.forNumber(action_);
+                @SuppressWarnings("deprecation")
+                policy.PolicyAction.PolicyRuleActionEnum result = policy.PolicyAction.PolicyRuleActionEnum.valueOf(action_);
                 return result == null ? policy.PolicyAction.PolicyRuleActionEnum.UNRECOGNIZED : result;
             }
 
@@ -693,7 +737,6 @@ public final class PolicyAction {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000001;
                 action_ = value.getNumber();
                 onChanged();
                 return this;
@@ -704,7 +747,6 @@ public final class PolicyAction {
              * @return This builder for chaining.
              */
             public Builder clearAction() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 action_ = 0;
                 onChanged();
                 return this;
@@ -713,9 +755,9 @@ public final class PolicyAction {
             private java.util.List<policy.PolicyAction.PolicyRuleActionConfig> actionConfig_ = java.util.Collections.emptyList();
 
             private void ensureActionConfigIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     actionConfig_ = new java.util.ArrayList<policy.PolicyAction.PolicyRuleActionConfig>(actionConfig_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -867,7 +909,7 @@ public final class PolicyAction {
             public Builder clearActionConfig() {
                 if (actionConfigBuilder_ == null) {
                     actionConfig_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     actionConfigBuilder_.clear();
@@ -941,7 +983,7 @@ public final class PolicyAction {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<policy.PolicyAction.PolicyRuleActionConfig, policy.PolicyAction.PolicyRuleActionConfig.Builder, policy.PolicyAction.PolicyRuleActionConfigOrBuilder> getActionConfigFieldBuilder() {
                 if (actionConfigBuilder_ == null) {
-                    actionConfigBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<policy.PolicyAction.PolicyRuleActionConfig, policy.PolicyAction.PolicyRuleActionConfig.Builder, policy.PolicyAction.PolicyRuleActionConfigOrBuilder>(actionConfig_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    actionConfigBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<policy.PolicyAction.PolicyRuleActionConfig, policy.PolicyAction.PolicyRuleActionConfig.Builder, policy.PolicyAction.PolicyRuleActionConfigOrBuilder>(actionConfig_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     actionConfig_ = null;
                 }
                 return actionConfigBuilder_;
@@ -974,17 +1016,7 @@ public final class PolicyAction {
 
             @java.lang.Override
             public PolicyRuleAction parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new PolicyRuleAction(input, extensionRegistry);
             }
         };
 
@@ -1059,6 +1091,56 @@ public final class PolicyAction {
             return new PolicyRuleActionConfig();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private PolicyRuleActionConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                actionKey_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                actionValue_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.PolicyAction.internal_static_policy_PolicyRuleActionConfig_descriptor;
         }
@@ -1070,8 +1152,7 @@ public final class PolicyAction {
 
         public static final int ACTION_KEY_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object actionKey_ = "";
+        private volatile java.lang.Object actionKey_;
 
         /**
          * <code>string action_key = 1;</code>
@@ -1108,8 +1189,7 @@ public final class PolicyAction {
 
         public static final int ACTION_VALUE_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object actionValue_ = "";
+        private volatile java.lang.Object actionValue_;
 
         /**
          * <code>string action_value = 2;</code>
@@ -1159,13 +1239,13 @@ public final class PolicyAction {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(actionKey_)) {
+            if (!getActionKeyBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, actionKey_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(actionValue_)) {
+            if (!getActionValueBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, actionValue_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -1174,13 +1254,13 @@ public final class PolicyAction {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(actionKey_)) {
+            if (!getActionKeyBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, actionKey_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(actionValue_)) {
+            if (!getActionValueBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, actionValue_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1198,7 +1278,7 @@ public final class PolicyAction {
                 return false;
             if (!getActionValue().equals(other.getActionValue()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -1214,7 +1294,7 @@ public final class PolicyAction {
             hash = (53 * hash) + getActionKey().hashCode();
             hash = (37 * hash) + ACTION_VALUE_FIELD_NUMBER;
             hash = (53 * hash) + getActionValue().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -1312,16 +1392,22 @@ public final class PolicyAction {
 
             // Construct using policy.PolicyAction.PolicyRuleActionConfig.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 actionKey_ = "";
                 actionValue_ = "";
                 return this;
@@ -1349,21 +1435,40 @@ public final class PolicyAction {
             @java.lang.Override
             public policy.PolicyAction.PolicyRuleActionConfig buildPartial() {
                 policy.PolicyAction.PolicyRuleActionConfig result = new policy.PolicyAction.PolicyRuleActionConfig(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.actionKey_ = actionKey_;
+                result.actionValue_ = actionValue_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(policy.PolicyAction.PolicyRuleActionConfig result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.actionKey_ = actionKey_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.actionValue_ = actionValue_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -1381,15 +1486,13 @@ public final class PolicyAction {
                     return this;
                 if (!other.getActionKey().isEmpty()) {
                     actionKey_ = other.actionKey_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getActionValue().isEmpty()) {
                     actionValue_ = other.actionValue_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -1401,54 +1504,20 @@ public final class PolicyAction {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                policy.PolicyAction.PolicyRuleActionConfig parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    actionKey_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    actionValue_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (policy.PolicyAction.PolicyRuleActionConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private java.lang.Object actionKey_ = "";
 
             /**
@@ -1492,7 +1561,6 @@ public final class PolicyAction {
                     throw new NullPointerException();
                 }
                 actionKey_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -1503,7 +1571,6 @@ public final class PolicyAction {
              */
             public Builder clearActionKey() {
                 actionKey_ = getDefaultInstance().getActionKey();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -1519,7 +1586,6 @@ public final class PolicyAction {
                 }
                 checkByteStringIsUtf8(value);
                 actionKey_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -1567,7 +1633,6 @@ public final class PolicyAction {
                     throw new NullPointerException();
                 }
                 actionValue_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1578,7 +1643,6 @@ public final class PolicyAction {
              */
             public Builder clearActionValue() {
                 actionValue_ = getDefaultInstance().getActionValue();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -1594,7 +1658,6 @@ public final class PolicyAction {
                 }
                 checkByteStringIsUtf8(value);
                 actionValue_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1626,17 +1689,7 @@ public final class PolicyAction {
 
             @java.lang.Override
             public PolicyRuleActionConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new PolicyRuleActionConfig(input, extensionRegistry);
             }
         };
 
diff --git a/src/policy/target/generated-sources/grpc/policy/PolicyCondition.java b/src/policy/target/generated-sources/grpc/policy/PolicyCondition.java
index 118359b08c9f805e4bac777c0fdb3720f2d8dd99..269c8b4380fd8f764ab61c6b77c289268a72d7bb 100644
--- a/src/policy/target/generated-sources/grpc/policy/PolicyCondition.java
+++ b/src/policy/target/generated-sources/grpc/policy/PolicyCondition.java
@@ -449,6 +449,76 @@ public final class PolicyCondition {
             return new PolicyRuleCondition();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private PolicyRuleCondition(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                int rawValue = input.readEnum();
+                                numericalOperator_ = rawValue;
+                                break;
+                            }
+                        case 26:
+                            {
+                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
+                                if (kpiValue_ != null) {
+                                    subBuilder = kpiValue_.toBuilder();
+                                }
+                                kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiValue_);
+                                    kpiValue_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return policy.PolicyCondition.internal_static_policy_PolicyRuleCondition_descriptor;
         }
@@ -485,12 +555,12 @@ public final class PolicyCondition {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int NUMERICALOPERATOR_FIELD_NUMBER = 2;
 
-        private int numericalOperator_ = 0;
+        private int numericalOperator_;
 
         /**
          * <code>.policy.NumericalOperator numericalOperator = 2;</code>
@@ -507,7 +577,8 @@ public final class PolicyCondition {
          */
         @java.lang.Override
         public policy.PolicyCondition.NumericalOperator getNumericalOperator() {
-            policy.PolicyCondition.NumericalOperator result = policy.PolicyCondition.NumericalOperator.forNumber(numericalOperator_);
+            @SuppressWarnings("deprecation")
+            policy.PolicyCondition.NumericalOperator result = policy.PolicyCondition.NumericalOperator.valueOf(numericalOperator_);
             return result == null ? policy.PolicyCondition.NumericalOperator.UNRECOGNIZED : result;
         }
 
@@ -538,7 +609,7 @@ public final class PolicyCondition {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+            return getKpiValue();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -565,7 +636,7 @@ public final class PolicyCondition {
             if (kpiValue_ != null) {
                 output.writeMessage(3, getKpiValue());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -583,7 +654,7 @@ public final class PolicyCondition {
             if (kpiValue_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKpiValue());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -611,7 +682,7 @@ public final class PolicyCondition {
                 if (!getKpiValue().equals(other.getKpiValue()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -633,7 +704,7 @@ public final class PolicyCondition {
                 hash = (37 * hash) + KPIVALUE_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiValue().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -731,25 +802,33 @@ public final class PolicyCondition {
 
             // Construct using policy.PolicyCondition.PolicyRuleCondition.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
                 numericalOperator_ = 0;
-                kpiValue_ = null;
-                if (kpiValueBuilder_ != null) {
-                    kpiValueBuilder_.dispose();
+                if (kpiValueBuilder_ == null) {
+                    kpiValue_ = null;
+                } else {
+                    kpiValue_ = null;
                     kpiValueBuilder_ = null;
                 }
                 return this;
@@ -777,24 +856,49 @@ public final class PolicyCondition {
             @java.lang.Override
             public policy.PolicyCondition.PolicyRuleCondition buildPartial() {
                 policy.PolicyCondition.PolicyRuleCondition result = new policy.PolicyCondition.PolicyRuleCondition(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
+                }
+                result.numericalOperator_ = numericalOperator_;
+                if (kpiValueBuilder_ == null) {
+                    result.kpiValue_ = kpiValue_;
+                } else {
+                    result.kpiValue_ = kpiValueBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(policy.PolicyCondition.PolicyRuleCondition result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.numericalOperator_ = numericalOperator_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.kpiValue_ = kpiValueBuilder_ == null ? kpiValue_ : kpiValueBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -819,7 +923,7 @@ public final class PolicyCondition {
                 if (other.hasKpiValue()) {
                     mergeKpiValue(other.getKpiValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -831,61 +935,20 @@ public final class PolicyCondition {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                policy.PolicyCondition.PolicyRuleCondition parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    numericalOperator_ = input.readEnum();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 26:
-                                {
-                                    input.readMessage(getKpiValueFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (policy.PolicyCondition.PolicyRuleCondition) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.KpiId kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
@@ -895,7 +958,7 @@ public final class PolicyCondition {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -919,11 +982,10 @@ public final class PolicyCondition {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -933,11 +995,10 @@ public final class PolicyCondition {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -946,16 +1007,15 @@ public final class PolicyCondition {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -963,13 +1023,13 @@ public final class PolicyCondition {
              * <code>.monitoring.KpiId kpiId = 1;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -977,7 +1037,6 @@ public final class PolicyCondition {
              * <code>.monitoring.KpiId kpiId = 1;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -1022,7 +1081,6 @@ public final class PolicyCondition {
              */
             public Builder setNumericalOperatorValue(int value) {
                 numericalOperator_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1033,7 +1091,8 @@ public final class PolicyCondition {
              */
             @java.lang.Override
             public policy.PolicyCondition.NumericalOperator getNumericalOperator() {
-                policy.PolicyCondition.NumericalOperator result = policy.PolicyCondition.NumericalOperator.forNumber(numericalOperator_);
+                @SuppressWarnings("deprecation")
+                policy.PolicyCondition.NumericalOperator result = policy.PolicyCondition.NumericalOperator.valueOf(numericalOperator_);
                 return result == null ? policy.PolicyCondition.NumericalOperator.UNRECOGNIZED : result;
             }
 
@@ -1046,7 +1105,6 @@ public final class PolicyCondition {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000002;
                 numericalOperator_ = value.getNumber();
                 onChanged();
                 return this;
@@ -1057,7 +1115,6 @@ public final class PolicyCondition {
              * @return This builder for chaining.
              */
             public Builder clearNumericalOperator() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 numericalOperator_ = 0;
                 onChanged();
                 return this;
@@ -1072,7 +1129,7 @@ public final class PolicyCondition {
              * @return Whether the kpiValue field is set.
              */
             public boolean hasKpiValue() {
-                return ((bitField0_ & 0x00000004) != 0);
+                return kpiValueBuilder_ != null || kpiValue_ != null;
             }
 
             /**
@@ -1096,11 +1153,10 @@ public final class PolicyCondition {
                         throw new NullPointerException();
                     }
                     kpiValue_ = value;
+                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -1110,11 +1166,10 @@ public final class PolicyCondition {
             public Builder setKpiValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiValueBuilder_ == null) {
                     kpiValue_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -1123,16 +1178,15 @@ public final class PolicyCondition {
              */
             public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiValueBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0) && kpiValue_ != null && kpiValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
-                        getKpiValueBuilder().mergeFrom(value);
+                    if (kpiValue_ != null) {
+                        kpiValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
                     } else {
                         kpiValue_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiValueBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -1140,13 +1194,13 @@ public final class PolicyCondition {
              * <code>.monitoring.KpiValue kpiValue = 3;</code>
              */
             public Builder clearKpiValue() {
-                bitField0_ = (bitField0_ & ~0x00000004);
-                kpiValue_ = null;
-                if (kpiValueBuilder_ != null) {
-                    kpiValueBuilder_.dispose();
+                if (kpiValueBuilder_ == null) {
+                    kpiValue_ = null;
+                    onChanged();
+                } else {
+                    kpiValue_ = null;
                     kpiValueBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -1154,7 +1208,6 @@ public final class PolicyCondition {
              * <code>.monitoring.KpiValue kpiValue = 3;</code>
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return getKpiValueFieldBuilder().getBuilder();
             }
@@ -1208,17 +1261,7 @@ public final class PolicyCondition {
 
             @java.lang.Override
             public PolicyRuleCondition parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new PolicyRuleCondition(input, extensionRegistry);
             }
         };
 
diff --git a/src/policy/target/generated-sources/grpc/policy/PolicyServiceGrpc.java b/src/policy/target/generated-sources/grpc/policy/PolicyServiceGrpc.java
index 6bc2e280896487b712d3426d5d623e6c4a474e29..e701a2256eb6800137ae4cd00c8887a97ba1cf43 100644
--- a/src/policy/target/generated-sources/grpc/policy/PolicyServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/policy/PolicyServiceGrpc.java
@@ -4,8 +4,7 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: policy.proto")
-@io.grpc.stub.annotations.GrpcGenerated
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: policy.proto")
 public final class PolicyServiceGrpc {
 
     private PolicyServiceGrpc() {
@@ -178,70 +177,63 @@ public final class PolicyServiceGrpc {
 
     /**
      */
-    public interface AsyncService {
+    public static abstract class PolicyServiceImplBase implements io.grpc.BindableService {
 
         /**
          */
-        default void policyAddService(policy.Policy.PolicyRuleService request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleState> responseObserver) {
+        public void policyAddService(policy.Policy.PolicyRuleService request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleState> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getPolicyAddServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void policyAddDevice(policy.Policy.PolicyRuleDevice request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleState> responseObserver) {
+        public void policyAddDevice(policy.Policy.PolicyRuleDevice request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleState> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getPolicyAddDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void policyUpdateService(policy.Policy.PolicyRuleService request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleState> responseObserver) {
+        public void policyUpdateService(policy.Policy.PolicyRuleService request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleState> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getPolicyUpdateServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void policyUpdateDevice(policy.Policy.PolicyRuleDevice request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleState> responseObserver) {
+        public void policyUpdateDevice(policy.Policy.PolicyRuleDevice request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleState> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getPolicyUpdateDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void policyDelete(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleState> responseObserver) {
+        public void policyDelete(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleState> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getPolicyDeleteMethod(), responseObserver);
         }
 
         /**
          */
-        default void getPolicyService(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleService> responseObserver) {
+        public void getPolicyService(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleService> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetPolicyServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void getPolicyDevice(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleDevice> responseObserver) {
+        public void getPolicyDevice(policy.Policy.PolicyRuleId request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleDevice> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetPolicyDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void getPolicyByServiceId(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleServiceList> responseObserver) {
+        public void getPolicyByServiceId(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<policy.Policy.PolicyRuleServiceList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetPolicyByServiceIdMethod(), responseObserver);
         }
-    }
-
-    /**
-     * Base class for the server implementation of the service PolicyService.
-     */
-    public static abstract class PolicyServiceImplBase implements io.grpc.BindableService, AsyncService {
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return PolicyServiceGrpc.bindService(this);
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getPolicyAddServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleService, policy.Policy.PolicyRuleState>(this, METHODID_POLICY_ADD_SERVICE))).addMethod(getPolicyAddDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleDevice, policy.Policy.PolicyRuleState>(this, METHODID_POLICY_ADD_DEVICE))).addMethod(getPolicyUpdateServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleService, policy.Policy.PolicyRuleState>(this, METHODID_POLICY_UPDATE_SERVICE))).addMethod(getPolicyUpdateDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleDevice, policy.Policy.PolicyRuleState>(this, METHODID_POLICY_UPDATE_DEVICE))).addMethod(getPolicyDeleteMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleId, policy.Policy.PolicyRuleState>(this, METHODID_POLICY_DELETE))).addMethod(getGetPolicyServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleId, policy.Policy.PolicyRuleService>(this, METHODID_GET_POLICY_SERVICE))).addMethod(getGetPolicyDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleId, policy.Policy.PolicyRuleDevice>(this, METHODID_GET_POLICY_DEVICE))).addMethod(getGetPolicyByServiceIdMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, policy.Policy.PolicyRuleServiceList>(this, METHODID_GET_POLICY_BY_SERVICE_ID))).build();
         }
     }
 
     /**
-     * A stub to allow clients to do asynchronous rpc calls to service PolicyService.
      */
     public static class PolicyServiceStub extends io.grpc.stub.AbstractAsyncStub<PolicyServiceStub> {
 
@@ -304,7 +296,6 @@ public final class PolicyServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do synchronous rpc calls to service PolicyService.
      */
     public static class PolicyServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<PolicyServiceBlockingStub> {
 
@@ -367,7 +358,6 @@ public final class PolicyServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do ListenableFuture-style rpc calls to service PolicyService.
      */
     public static class PolicyServiceFutureStub extends io.grpc.stub.AbstractFutureStub<PolicyServiceFutureStub> {
 
@@ -447,11 +437,11 @@ public final class PolicyServiceGrpc {
 
     private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
 
-        private final AsyncService serviceImpl;
+        private final PolicyServiceImplBase serviceImpl;
 
         private final int methodId;
 
-        MethodHandlers(AsyncService serviceImpl, int methodId) {
+        MethodHandlers(PolicyServiceImplBase serviceImpl, int methodId) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
         }
@@ -499,10 +489,6 @@ public final class PolicyServiceGrpc {
         }
     }
 
-    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
-        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getPolicyAddServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleService, policy.Policy.PolicyRuleState>(service, METHODID_POLICY_ADD_SERVICE))).addMethod(getPolicyAddDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleDevice, policy.Policy.PolicyRuleState>(service, METHODID_POLICY_ADD_DEVICE))).addMethod(getPolicyUpdateServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleService, policy.Policy.PolicyRuleState>(service, METHODID_POLICY_UPDATE_SERVICE))).addMethod(getPolicyUpdateDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleDevice, policy.Policy.PolicyRuleState>(service, METHODID_POLICY_UPDATE_DEVICE))).addMethod(getPolicyDeleteMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleId, policy.Policy.PolicyRuleState>(service, METHODID_POLICY_DELETE))).addMethod(getGetPolicyServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleId, policy.Policy.PolicyRuleService>(service, METHODID_GET_POLICY_SERVICE))).addMethod(getGetPolicyDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<policy.Policy.PolicyRuleId, policy.Policy.PolicyRuleDevice>(service, METHODID_GET_POLICY_DEVICE))).addMethod(getGetPolicyByServiceIdMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, policy.Policy.PolicyRuleServiceList>(service, METHODID_GET_POLICY_BY_SERVICE_ID))).build();
-    }
-
     private static abstract class PolicyServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
         PolicyServiceBaseDescriptorSupplier() {
diff --git a/src/policy/target/generated-sources/grpc/service/ServiceServiceGrpc.java b/src/policy/target/generated-sources/grpc/service/ServiceServiceGrpc.java
index 7b5a367725db77054896e47965c2e50ed309a42f..4cd98546277145a8c1f277ef143fe46ac5f58dc0 100644
--- a/src/policy/target/generated-sources/grpc/service/ServiceServiceGrpc.java
+++ b/src/policy/target/generated-sources/grpc/service/ServiceServiceGrpc.java
@@ -4,8 +4,7 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: service.proto")
-@io.grpc.stub.annotations.GrpcGenerated
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: service.proto")
 public final class ServiceServiceGrpc {
 
     private ServiceServiceGrpc() {
@@ -118,46 +117,39 @@ public final class ServiceServiceGrpc {
 
     /**
      */
-    public interface AsyncService {
+    public static abstract class ServiceServiceImplBase implements io.grpc.BindableService {
 
         /**
          */
-        default void createService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
+        public void createService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getCreateServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void updateService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
+        public void updateService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUpdateServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void deleteService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void deleteService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void recomputeConnections(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void recomputeConnections(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRecomputeConnectionsMethod(), responseObserver);
         }
-    }
-
-    /**
-     * Base class for the server implementation of the service ServiceService.
-     */
-    public static abstract class ServiceServiceImplBase implements io.grpc.BindableService, AsyncService {
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return ServiceServiceGrpc.bindService(this);
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getCreateServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_CREATE_SERVICE))).addMethod(getUpdateServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_UPDATE_SERVICE))).addMethod(getDeleteServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>(this, METHODID_DELETE_SERVICE))).addMethod(getRecomputeConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.Empty>(this, METHODID_RECOMPUTE_CONNECTIONS))).build();
         }
     }
 
     /**
-     * A stub to allow clients to do asynchronous rpc calls to service ServiceService.
      */
     public static class ServiceServiceStub extends io.grpc.stub.AbstractAsyncStub<ServiceServiceStub> {
 
@@ -196,7 +188,6 @@ public final class ServiceServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do synchronous rpc calls to service ServiceService.
      */
     public static class ServiceServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<ServiceServiceBlockingStub> {
 
@@ -235,7 +226,6 @@ public final class ServiceServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do ListenableFuture-style rpc calls to service ServiceService.
      */
     public static class ServiceServiceFutureStub extends io.grpc.stub.AbstractFutureStub<ServiceServiceFutureStub> {
 
@@ -283,11 +273,11 @@ public final class ServiceServiceGrpc {
 
     private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
 
-        private final AsyncService serviceImpl;
+        private final ServiceServiceImplBase serviceImpl;
 
         private final int methodId;
 
-        MethodHandlers(AsyncService serviceImpl, int methodId) {
+        MethodHandlers(ServiceServiceImplBase serviceImpl, int methodId) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
         }
@@ -323,10 +313,6 @@ public final class ServiceServiceGrpc {
         }
     }
 
-    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
-        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getCreateServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(service, METHODID_CREATE_SERVICE))).addMethod(getUpdateServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(service, METHODID_UPDATE_SERVICE))).addMethod(getDeleteServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>(service, METHODID_DELETE_SERVICE))).addMethod(getRecomputeConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.Empty>(service, METHODID_RECOMPUTE_CONNECTIONS))).build();
-    }
-
     private static abstract class ServiceServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
         ServiceServiceBaseDescriptorSupplier() {
diff --git a/src/policy/target/kubernetes/kubernetes.yml b/src/policy/target/kubernetes/kubernetes.yml
index 634c1516317426ef64979524f7a48c32899bdf0b..4f581f0c9225dd8772dd476b133ba04880683851 100644
--- a/src/policy/target/kubernetes/kubernetes.yml
+++ b/src/policy/target/kubernetes/kubernetes.yml
@@ -3,8 +3,8 @@ apiVersion: v1
 kind: Service
 metadata:
   annotations:
-    app.quarkus.io/commit-id: aa8541cd42120ff91ef0573b05beb1e1d0861617
-    app.quarkus.io/build-timestamp: 2024-02-15 - 09:57:46 +0000
+    app.quarkus.io/commit-id: 182b55a46135040b71a5980de9f72d94a85db2e8
+    app.quarkus.io/build-timestamp: 2024-04-08 - 08:15:43 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
@@ -21,14 +21,14 @@ spec:
       port: 443
       protocol: TCP
       targetPort: 8443
-    - name: http
-      port: 9192
-      protocol: TCP
-      targetPort: 8080
     - name: grpc
       port: 6060
       protocol: TCP
       targetPort: 6060
+    - name: http
+      port: 9192
+      protocol: TCP
+      targetPort: 8080
   selector:
     app.kubernetes.io/name: policyservice
   type: ClusterIP
@@ -37,8 +37,8 @@ apiVersion: apps/v1
 kind: Deployment
 metadata:
   annotations:
-    app.quarkus.io/commit-id: aa8541cd42120ff91ef0573b05beb1e1d0861617
-    app.quarkus.io/build-timestamp: 2024-02-15 - 09:57:46 +0000
+    app.quarkus.io/commit-id: 182b55a46135040b71a5980de9f72d94a85db2e8
+    app.quarkus.io/build-timestamp: 2024-04-08 - 08:15:43 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
@@ -57,8 +57,8 @@ spec:
   template:
     metadata:
       annotations:
-        app.quarkus.io/commit-id: aa8541cd42120ff91ef0573b05beb1e1d0861617
-        app.quarkus.io/build-timestamp: 2024-02-15 - 09:57:46 +0000
+        app.quarkus.io/commit-id: 182b55a46135040b71a5980de9f72d94a85db2e8
+        app.quarkus.io/build-timestamp: 2024-04-08 - 08:15:43 +0000
         prometheus.io/scrape: "true"
         prometheus.io/path: /q/metrics
         prometheus.io/port: "8080"
@@ -75,12 +75,12 @@ spec:
               valueFrom:
                 fieldRef:
                   fieldPath: metadata.namespace
-            - name: CONTEXT_SERVICE_HOST
-              value: contextservice
             - name: SERVICE_SERVICE_HOST
               value: serviceservice
             - name: MONITORING_SERVICE_HOST
               value: monitoringservice
+            - name: CONTEXT_SERVICE_HOST
+              value: contextservice
           image: labs.etsi.org:5050/tfs/controller/policy:0.1.0
           imagePullPolicy: Always
           livenessProbe:
@@ -98,12 +98,12 @@ spec:
             - containerPort: 8443
               name: https
               protocol: TCP
-            - containerPort: 8080
-              name: http
-              protocol: TCP
             - containerPort: 6060
               name: grpc
               protocol: TCP
+            - containerPort: 8080
+              name: http
+              protocol: TCP
           readinessProbe:
             failureThreshold: 3
             httpGet:
diff --git a/src/service/service/service_handler_api/FilterFields.py b/src/service/service/service_handler_api/FilterFields.py
index 633f41b63c71727d9ead0ee57b79002dc3a6cd97..be7a4506ead661d24d83f64c4fd8b450b228c68a 100644
--- a/src/service/service/service_handler_api/FilterFields.py
+++ b/src/service/service/service_handler_api/FilterFields.py
@@ -39,7 +39,7 @@ DEVICE_DRIVER_VALUES = {
     DeviceDriverEnum.DEVICEDRIVER_XR,
     DeviceDriverEnum.DEVICEDRIVER_IETF_L2VPN,
     DeviceDriverEnum.DEVICEDRIVER_GNMI_OPENCONFIG,
-    DeviceDriverEnum.DEVICEDRIVER_FLEXSCALE,
+    DeviceDriverEnum.DEVICEDRIVER_OPTICAL_TFS,
     DeviceDriverEnum.DEVICEDRIVER_IETF_ACTN,
     DeviceDriverEnum.DEVICEDRIVER_OC
 }
diff --git a/src/service/service/service_handlers/__init__.py b/src/service/service/service_handlers/__init__.py
index f0628110fbd5f2b15308f05c9061c699a09dbcff..0f35e063c7d5be5af327d6aab00badbeba161cd8 100644
--- a/src/service/service/service_handlers/__init__.py
+++ b/src/service/service/service_handlers/__init__.py
@@ -98,7 +98,7 @@ SERVICE_HANDLERS = [
     (E2EOrchestratorServiceHandler, [
         {
             FilterFieldEnum.SERVICE_TYPE  : ServiceTypeEnum.SERVICETYPE_E2E,
-            FilterFieldEnum.DEVICE_DRIVER : [DeviceDriverEnum.DEVICEDRIVER_FLEXSCALE],
+            FilterFieldEnum.DEVICE_DRIVER : [DeviceDriverEnum.DEVICEDRIVER_OPTICAL_TFS],
         }
     ]),
     (OCServiceHandler, [
diff --git a/src/service/service/task_scheduler/TaskExecutor.py b/src/service/service/task_scheduler/TaskExecutor.py
index 5c5747970c6accf3c76da6d4ffb60de48edbcdac..fdfcb903b59e4780e1c66ba3a9ee698bf4bea6f9 100644
--- a/src/service/service/task_scheduler/TaskExecutor.py
+++ b/src/service/service/task_scheduler/TaskExecutor.py
@@ -122,17 +122,16 @@ class TaskExecutor:
         optical_config_id = OpticalConfigId()
         optical_config_id.opticalconfig_uuid = device.device_id.device_uuid.uuid
         optical_config = OpticalConfig()
-        setting = settings.value if settings else ""
+        setting = settings.value if settings else ''
 
-        new_config = {}
         try:
             result = self._context_client.SelectOpticalConfig(optical_config_id)
-            new_config = json.loads(result.config)
-            if result is not None :
+            if result is not None:
+                new_config = json.loads(result.config)
                 new_config["new_config"] = setting
                 new_config["is_opticalband"] = is_opticalband
                 new_config["flow"] = flows
-                result.config = str(new_config)
+                result.config = json.dumps(new_config)
                 optical_config.CopyFrom(result)
                 self._device_client.ConfigureOpticalDevice(optical_config)
             self._store_grpc_object(CacheableObjectType.DEVICE, device_key, device)
diff --git a/src/service/service/tools/OpticalTools.py b/src/service/service/tools/OpticalTools.py
index 20652437194b9ef498f5b83bbe996863ba49c911..1837bf688c3ab4f61d49c4f481928896a6f4dbd7 100644
--- a/src/service/service/tools/OpticalTools.py
+++ b/src/service/service/tools/OpticalTools.py
@@ -13,35 +13,58 @@
 # limitations under the License.
 # 
 
-import json
-import requests
-import uuid
-from common.Constants import *
+import functools, json, logging, requests, uuid
 from typing import List
+from common.Constants import ServiceNameEnum
 from common.proto.context_pb2 import(
     Device, DeviceId, Service, Connection, EndPointId, TopologyId, ContextId, Uuid,
     ConfigRule, ConfigActionEnum, ConfigRule_Custom
 )
 from common.proto.pathcomp_pb2 import PathCompReply
 from common.Settings import (
-    ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, find_environment_variables, get_env_var_name
+    ENVVAR_SUFIX_SERVICE_BASEURL_HTTP, ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC,
+    find_environment_variables, get_env_var_name
+)
+from service.service.tools.replies import (
+    reply_uni_txt, optical_band_uni_txt, reply_bid_txt, optical_band_bid_txt
 )
-from service.service.tools.replies import reply_uni_txt, optical_band_uni_txt, reply_bid_txt, optical_band_bid_txt
 
 log = logging.getLogger(__name__)
 
-testing = False
+TESTING = False
+
+get_optical_controller_setting = functools.partial(get_env_var_name, ServiceNameEnum.OPTICALCONTROLLER)
+VAR_NAME_OPTICAL_CTRL_BASEURL_HTTP = get_optical_controller_setting(ENVVAR_SUFIX_SERVICE_BASEURL_HTTP)
+VAR_NAME_OPTICAL_CTRL_SCHEMA       = get_optical_controller_setting('SCHEMA')
+VAR_NAME_OPTICAL_CTRL_HOST         = get_optical_controller_setting(ENVVAR_SUFIX_SERVICE_HOST)
+VAR_NAME_OPTICAL_CTRL_PORT         = get_optical_controller_setting(ENVVAR_SUFIX_SERVICE_PORT_GRPC)
+
+OPTICAL_CTRL_BASE_URL = '{:s}://{:s}:{:d}/OpticalTFS'
+
+def get_optical_controller_base_url() -> str:
+    settings = find_environment_variables([
+        VAR_NAME_OPTICAL_CTRL_BASEURL_HTTP,
+        VAR_NAME_OPTICAL_CTRL_SCHEMA,
+        VAR_NAME_OPTICAL_CTRL_HOST,
+        VAR_NAME_OPTICAL_CTRL_PORT,
+    ])
+    base_url = settings.get(VAR_NAME_OPTICAL_CTRL_BASEURL_HTTP)
+    if base_url is not None:
+        log.debug('Optical Controller: base_url={:s}'.format(str(base_url)))
+        return base_url
+
+    host = settings.get(VAR_NAME_OPTICAL_CTRL_HOST)
+    port = int(settings.get(VAR_NAME_OPTICAL_CTRL_PORT, 80))
+
+    MSG = 'Optical Controller not found: settings={:s}'
+    if host is None: raise Exception(MSG.format(str(settings)))
+    if port is None: raise Exception(MSG.format(str(settings)))
 
-VAR_NAME_OPTICAL_CONTROLLER_HOST = get_env_var_name(ServiceNameEnum.OPTICALCONTROLLER, ENVVAR_SUFIX_SERVICE_HOST)
-VAR_NAME_OPTICAL_CONTROLLER_PORT = get_env_var_name(ServiceNameEnum.OPTICALCONTROLLER, ENVVAR_SUFIX_SERVICE_PORT_GRPC)
+    schema = settings.get(VAR_NAME_OPTICAL_CTRL_SCHEMA, 'http')
+    base_url = OPTICAL_CTRL_BASE_URL.format(schema, host, port)
+    log.debug('Optical Controller: base_url={:s}'.format(str(base_url)))
+    return base_url
 
-opticalcontrollers_url = find_environment_variables([
-    VAR_NAME_OPTICAL_CONTROLLER_HOST,
-    VAR_NAME_OPTICAL_CONTROLLER_PORT,
-])
-OPTICAL_IP   = opticalcontrollers_url.get(VAR_NAME_OPTICAL_CONTROLLER_HOST)
-OPTICAL_PORT = opticalcontrollers_url.get(VAR_NAME_OPTICAL_CONTROLLER_PORT)
-log.info(str(OPTICAL_IP), str(OPTICAL_PORT))
 
 def get_uuids_from_names(devices: List[Device], device_name: str, port_name: str):
     device_uuid = ""
@@ -79,17 +102,18 @@ def get_device_name_from_uuid(devices: List[Device], device_uuid: str):
 
 
 def add_lightpath(src, dst, bitrate, bidir, ob_band) -> str:
-    if not testing:
+    if not TESTING:
         urlx = ""
         headers = {"Content-Type": "application/json"}
+        base_url = get_optical_controller_base_url()
         if ob_band is None:
             if bidir is None:
                 bidir = 1
-            urlx = "http://{}:{}/OpticalTFS/AddFlexLightpath/{}/{}/{}/{}".format(OPTICAL_IP, OPTICAL_PORT, src, dst, bitrate, bidir)
+            urlx = "{:s}/AddFlexLightpath/{:s}/{:s}/{:s}/{:s}".format(base_url, src, dst, str(bitrate), str(bidir))
         else:
             if bidir is None:
                 bidir = 1
-            urlx = "http://{}:{}/OpticalTFS/AddFlexLightpath/{}/{}/{}/{}/{}".format(OPTICAL_IP, OPTICAL_PORT, src, dst, bitrate, bidir, ob_band)
+            urlx = "{:s}/AddFlexLightpath/{:s}/{:s}/{:s}/{:s}/{:s}".format(base_url, src, dst, str(bitrate), str(bidir), str(ob_band))
         r = requests.put(urlx, headers=headers)
         reply = r.text 
         return reply
@@ -101,8 +125,9 @@ def add_lightpath(src, dst, bitrate, bidir, ob_band) -> str:
                 
 
 def get_optical_band(idx) -> str:
-    if not testing:
-        urlx = "http://{}:{}/OpticalTFS/GetOpticalBand/{}".format(OPTICAL_IP, OPTICAL_PORT, idx)
+    if not TESTING:
+        base_url = get_optical_controller_base_url()
+        urlx = "{:s}/GetOpticalBand/{:s}".format(base_url, str(idx))
         headers = {"Content-Type": "application/json"}
         r = requests.get(urlx, headers=headers)
         reply = r.text 
@@ -116,8 +141,9 @@ def get_optical_band(idx) -> str:
     
 def delete_lightpath(flow_id, src, dst, bitrate) -> str:
     reply = "200"
-    if not testing:
-        urlx = "http://{}:{}/OpticalTFS/DelLightpath/{}/{}/{}/{}".format(OPTICAL_IP, OPTICAL_PORT, flow_id, src, dst, bitrate)
+    if not TESTING:
+        base_url = get_optical_controller_base_url()
+        urlx = "{:s}/DelLightpath/{:s}/{:s}/{:s}/{:s}".format(base_url, str(flow_id), src, dst, str(bitrate))
 
         headers = {"Content-Type": "application/json"}
         r = requests.delete(urlx, headers=headers)
@@ -126,7 +152,8 @@ def delete_lightpath(flow_id, src, dst, bitrate) -> str:
 
 
 def get_lightpaths() -> str:
-    urlx = "http://{}:{}/OpticalTFS/GetLightpaths".format(OPTICAL_IP, OPTICAL_PORT)
+    base_url = get_optical_controller_base_url()
+    urlx = "{:s}/GetLightpaths".format(base_url)
 
     headers = {"Content-Type": "application/json"}
     r = requests.get(urlx, headers=headers)
diff --git a/src/tests/.gitlab-ci.yml b/src/tests/.gitlab-ci.yml
index 41b8bb36ca8d3ef7eae444cdc9525cfdf4e48d02..b7345bbd10d16e98e07960f88d15724aa940ed06 100644
--- a/src/tests/.gitlab-ci.yml
+++ b/src/tests/.gitlab-ci.yml
@@ -19,4 +19,4 @@ include:
   - local: '/src/tests/ecoc22/.gitlab-ci.yml'
   #- local: '/src/tests/nfvsdn22/.gitlab-ci.yml'
   #- local: '/src/tests/ofc23/.gitlab-ci.yml'
-  #- local: '/src/tests/ofc24/.gitlab-ci.yml'
+  - local: '/src/tests/ofc24/.gitlab-ci.yml'
diff --git a/src/tests/ecoc22/Dockerfile b/src/tests/ecoc22/Dockerfile
index 3ac134a384a5b61d4dca05fcf9076680c74fe649..28fc91d5ead5cb3020936c7a270fe7856231db86 100644
--- a/src/tests/ecoc22/Dockerfile
+++ b/src/tests/ecoc22/Dockerfile
@@ -72,8 +72,6 @@ COPY src/device/__init__.py device/__init__.py
 COPY src/device/client/. device/client/
 COPY src/monitoring/__init__.py monitoring/__init__.py
 COPY src/monitoring/client/. monitoring/client/
-COPY src/monitoring/__init__.py monitoring/__init__.py
-COPY src/monitoring/client/. monitoring/client/
 COPY src/e2e_orchestrator/__init__.py e2e_orchestrator/__init__.py
 COPY src/e2e_orchestrator/client/. e2e_orchestrator/client/
 COPY src/service/__init__.py service/__init__.py
diff --git a/src/tests/ofc22/.gitlab-ci.yml b/src/tests/ofc22/.gitlab-ci.yml
index 013a389bc438cdac8307f71288f74b0a3afd9737..810e591690b4c9698aad628bef4c63a270c02022 100644
--- a/src/tests/ofc22/.gitlab-ci.yml
+++ b/src/tests/ofc22/.gitlab-ci.yml
@@ -96,7 +96,7 @@ end2end_test ofc22:
     - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/sliceservice -c server
     - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/nbiservice -c server
     - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/monitoringservice -c server
-    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/ztpservice -c server
+    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/ztpservice -c ztpservice
     - if docker ps -a | grep ${TEST_NAME}; then docker rm -f ${TEST_NAME}; fi
     - docker images --filter="dangling=true" --quiet | xargs -r docker rmi
   #coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
diff --git a/src/tests/ofc22/Dockerfile b/src/tests/ofc22/Dockerfile
index 4817bd93a313b74851e01bba53174dd14f280a18..4cba83466de077890c39226b58d997230ec844b6 100644
--- a/src/tests/ofc22/Dockerfile
+++ b/src/tests/ofc22/Dockerfile
@@ -72,8 +72,6 @@ COPY src/device/__init__.py device/__init__.py
 COPY src/device/client/. device/client/
 COPY src/monitoring/__init__.py monitoring/__init__.py
 COPY src/monitoring/client/. monitoring/client/
-COPY src/monitoring/__init__.py monitoring/__init__.py
-COPY src/monitoring/client/. monitoring/client/
 COPY src/e2e_orchestrator/__init__.py e2e_orchestrator/__init__.py
 COPY src/e2e_orchestrator/client/. e2e_orchestrator/client/
 COPY src/service/__init__.py service/__init__.py
diff --git a/src/tests/ofc24/.gitlab-ci.yml b/src/tests/ofc24/.gitlab-ci.yml
index 0b5593b160ee14941546242dd3a4c3571407dedf..f169bf7ee08e2faaeff30776080c8128d82e9fe5 100644
--- a/src/tests/ofc24/.gitlab-ci.yml
+++ b/src/tests/ofc24/.gitlab-ci.yml
@@ -13,9 +13,9 @@
 # limitations under the License.
 
 # Build, tag, and push the Docker image to the GitLab Docker registry
-build ofc22:
+build ofc24:
   variables:
-    TEST_NAME: 'ofc22'
+    TEST_NAME: 'ofc24'
   stage: build
   before_script:
     - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
@@ -36,23 +36,65 @@ build ofc22:
       - .gitlab-ci.yml
 
 # Deploy TeraFlowSDN and Execute end-2-end test
-end2end_test ofc22:
+end2end_test ofc24:
   variables:
-    TEST_NAME: 'ofc22'
+    TEST_NAME: 'ofc24'
   stage: end2end_test
   # Disable to force running it after all other tasks
   #needs:
-  #  - build ofc22
+  #  - build ofc24
   before_script:
     - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+    - docker rm -f na-t1 na-t2 na-r1 na-r2
+    - docker network rm -f na-br
+
   script:
     # Download Docker image to run the test
     - docker pull "${CI_REGISTRY_IMAGE}/${TEST_NAME}:latest"
+    - docker pull asgamb1/oc23bgp.img:latest
+    - docker pull asgamb1/flexscale-node.img:latest
 
     # Check MicroK8s is ready
     - microk8s status --wait-ready
     - kubectl get pods --all-namespaces
 
+    # Deploy Optical Device Node Agents
+    - >
+      docker network create -d bridge --subnet=172.254.253.0/24 --gateway=172.254.253.254
+      --ip-range=172.254.253.0/24 na-br
+    - >
+      docker run -dit --init --name na-t1 --network=na-br --ip 172.254.253.101
+      --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/startNetconfAgent-tp.sh:/confd/examples.confd/OC23/startNetconfAgent.sh"
+      --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/platform_t1.xml:/confd/examples.confd/OC23/platform.xml"
+      asgamb1/oc23bgp.img:latest /confd/examples.confd/OC23/startNetconfAgent.sh
+    - >
+      docker run -dit --init --name na-t2 --network=na-br --ip 172.254.253.102
+      --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/startNetconfAgent-tp.sh:/confd/examples.confd/OC23/startNetconfAgent.sh"
+      --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/platform_t2.xml:/confd/examples.confd/OC23/platform.xml"
+      asgamb1/oc23bgp.img:latest /confd/examples.confd/OC23/startNetconfAgent.sh
+    - >
+      docker run -dit --init --name na-r1 --network=na-br --ip 172.254.253.201
+      --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/startNetconfAgent-mg-on.sh:/confd/examples.confd/OC23/startNetconfAgent.sh"
+      --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/platform_r1.xml:/confd/examples.confd/OC23/platform.xml"
+      asgamb1/flexscale-node.img:latest /confd/examples.confd/OC23/startNetconfAgent.sh
+    - >
+      docker run -dit --init --name na-r2 --network=na-br --ip 172.254.253.202
+      --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/startNetconfAgent-mg-on.sh:/confd/examples.confd/OC23/startNetconfAgent.sh"
+      --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/platform_r2.xml:/confd/examples.confd/OC23/platform.xml"
+      asgamb1/flexscale-node.img:latest /confd/examples.confd/OC23/startNetconfAgent.sh
+
+
+    # Wait for initialization of Optical Device Node Agents
+    - sleep 3
+    - docker ps -a
+    - while ! docker logs na-t1 2>&1 | grep -q '*** ConfD OpenConfig NETCONF agent ***'; do sleep 1; done
+    - while ! docker logs na-t2 2>&1 | grep -q '*** ConfD OpenConfig NETCONF agent ***'; do sleep 1; done
+    - while ! docker logs na-r1 2>&1 | grep -q '*** ConfD OpenConfig NETCONF agent ***'; do sleep 1; done
+    - while ! docker logs na-r2 2>&1 | grep -q '*** ConfD OpenConfig NETCONF agent ***'; do sleep 1; done
+    - sleep 3
+    - docker ps -a
+
+
     # Configure TeraFlowSDN deployment
     # Uncomment if DEBUG log level is needed for the components
     #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/contextservice.yaml
@@ -86,7 +128,9 @@ end2end_test ofc22:
       --volume "$PWD/tfs_runtime_env_vars.sh:/var/teraflow/tfs_runtime_env_vars.sh"
       --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
       $CI_REGISTRY_IMAGE/${TEST_NAME}:latest
+
   after_script:
+    # Dump TeraFlowSDN component logs
     - source src/tests/${TEST_NAME}/deploy_specs.sh
     - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server
     - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/deviceservice -c server
@@ -94,8 +138,23 @@ end2end_test ofc22:
     - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/serviceservice -c server
     - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/sliceservice -c server
     - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/nbiservice -c server
+    - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/opticalcontrollerservice -c server
     - if docker ps -a | grep ${TEST_NAME}; then docker rm -f ${TEST_NAME}; fi
+
+    # Dump Optical Device Node Agents container status and logs
+    - docker ps -a
+    - docker logs na-t1
+    - docker logs na-t2
+    - docker logs na-r1
+    - docker logs na-r2
+
+    # Destroy Optical Device Node Agents
+    - docker rm -f na-t1 na-t2 na-r1 na-r2
+    - docker network rm -f na-br
+
+    # Clean old docker images
     - docker images --filter="dangling=true" --quiet | xargs -r docker rmi
+
   #coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
   rules:
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
diff --git a/src/tests/ofc24/Dockerfile b/src/tests/ofc24/Dockerfile
index 8efa0c72c3bdc72bd336d10a4ffdbc0af025fc25..bef7d25fee87f2539dfb81aaab47d73b4f0fe287 100644
--- a/src/tests/ofc24/Dockerfile
+++ b/src/tests/ofc24/Dockerfile
@@ -70,10 +70,8 @@ COPY src/context/__init__.py context/__init__.py
 COPY src/context/client/. context/client/
 COPY src/device/__init__.py device/__init__.py
 COPY src/device/client/. device/client/
-#COPY src/monitoring/__init__.py monitoring/__init__.py
-#COPY src/monitoring/client/. monitoring/client/
-#COPY src/monitoring/__init__.py monitoring/__init__.py
-#COPY src/monitoring/client/. monitoring/client/
+COPY src/monitoring/__init__.py monitoring/__init__.py
+COPY src/monitoring/client/. monitoring/client/
 COPY src/e2e_orchestrator/__init__.py e2e_orchestrator/__init__.py
 COPY src/e2e_orchestrator/client/. e2e_orchestrator/client/
 COPY src/service/__init__.py service/__init__.py
@@ -82,18 +80,21 @@ COPY src/slice/__init__.py slice/__init__.py
 COPY src/slice/client/. slice/client/
 COPY src/tests/*.py ./tests/
 COPY src/tests/ofc24/__init__.py ./tests/ofc24/__init__.py
-COPY src/tests/ofc24/descriptors_topology.json ./tests/ofc24/descriptors_topology.json
+COPY src/tests/ofc24/descriptors/topology.json ./tests/ofc24/descriptors/topology.json
+COPY src/tests/ofc24/descriptors/service-unidir.json ./tests/ofc24/descriptors/service-unidir.json
+COPY src/tests/ofc24/descriptors/service-bidir.json ./tests/ofc24/descriptors/service-bidir.json
 COPY src/tests/ofc24/tests/. ./tests/ofc24/tests/
-COPY src/tests/tools/. ./tests/tools/
 
 RUN tee ./run_tests.sh <<EOF
 #!/bin/bash
 source /var/teraflow/tfs_runtime_env_vars.sh
 export PYTHONPATH=/var/teraflow
-pytest --verbose --log-level=INFO /var/teraflow/tests/ofc24/tests/test_functional_bootstrap.py      --junitxml=/opt/results/report_bootstrap.xml
-pytest --verbose --log-level=INFO /var/teraflow/tests/ofc24/tests/test_functional_create_service.py --junitxml=/opt/results/report_create_service.xml
-pytest --verbose --log-level=INFO /var/teraflow/tests/ofc24/tests/test_functional_delete_service.py --junitxml=/opt/results/report_delete_service.xml
-pytest --verbose --log-level=INFO /var/teraflow/tests/ofc24/tests/test_functional_cleanup.py        --junitxml=/opt/results/report_cleanup.xml
+pytest --verbose --log-level=INFO /var/teraflow/tests/ofc24/tests/test_functional_bootstrap.py             --junitxml=/opt/results/report_bootstrap.xml
+pytest --verbose --log-level=INFO /var/teraflow/tests/ofc24/tests/test_functional_create_service_unidir.py --junitxml=/opt/results/report_create_service_unidir.xml
+pytest --verbose --log-level=INFO /var/teraflow/tests/ofc24/tests/test_functional_delete_service_unidir.py --junitxml=/opt/results/report_delete_service_unidir.xml
+pytest --verbose --log-level=INFO /var/teraflow/tests/ofc24/tests/test_functional_create_service_bidir.py  --junitxml=/opt/results/report_create_service_bidir.xml
+pytest --verbose --log-level=INFO /var/teraflow/tests/ofc24/tests/test_functional_delete_service_bidir.py  --junitxml=/opt/results/report_delete_service_bidir.xml
+pytest --verbose --log-level=INFO /var/teraflow/tests/ofc24/tests/test_functional_cleanup.py               --junitxml=/opt/results/report_cleanup.xml
 EOF
 RUN chmod ug+x ./run_tests.sh
 
diff --git a/src/tests/ofc24/__init__.py b/src/tests/ofc24/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..1549d9811aa5d1c193a44ad45d0d7773236c0612
--- /dev/null
+++ b/src/tests/ofc24/__init__.py
@@ -0,0 +1,14 @@
+# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
diff --git a/src/tests/ofc24/README.md b/src/tests/ofc24/_old/README.md
similarity index 100%
rename from src/tests/ofc24/README.md
rename to src/tests/ofc24/_old/README.md
diff --git a/src/tests/ofc24/_old/startExtraNetConfigAgent.sh b/src/tests/ofc24/_old/startExtraNetConfigAgent.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f8638a51f289af6718e388db583d94da40653efb
--- /dev/null
+++ b/src/tests/ofc24/_old/startExtraNetConfigAgent.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+         
+
+
+
+screen -dmS t1 -T xterm sh -c "docker run -p 10.0.2.4:2023:2022 -v ~/tfs-ctrl/src/tests/ofc24/tempOC/files:/files --name na1 -it asgamb1/oc23bgp.img:latest bash"
+screen -dmS t2 -T xterm sh -c "docker run -p 10.0.2.4:2024:2022 -v ~/tfs-ctrl/src/tests/ofc24/tempOC/files:/files --name na2 -it asgamb1/oc23bgp.img:latest bash"
+
+
+
+sleep 4
+echo "starting transponder1 "
+
+if [ "$( docker container  inspect -f '{{.State.Running}}' na1)" = "true" ]; then 
+        docker exec  na1 sh -c  " cp /files/platform_t1.xml demoECOC21.xml ; 
+                                 /confd/examples.confd/OC23/startNetconfAgent.sh;"
+       
+else 
+        echo "na1 container is not running yet"
+fi
+
+echo "starting transponder2 "
+
+if [ "$( docker container  inspect -f '{{.State.Running}}' na2)" = "true" ]; then 
+        docker exec  na2 sh -c " cp /files/platform_t2.xml demoECOC21.xml;
+                                  /confd/examples.confd/OC23/startNetconfAgent.sh  "
+
+else 
+        echo "na2 container is not running yet"
+fi
\ No newline at end of file
diff --git a/src/tests/ofc24/_old/start_topo.sh b/src/tests/ofc24/_old/start_topo.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ed93641c99420768271279735c8430c5a462935d
--- /dev/null
+++ b/src/tests/ofc24/_old/start_topo.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+IMAGE_NAME="asgamb1/oc23bgp.img:latest"
+DOCKER_CONTAINER=$1
+DOCKER_PORT="2022"
+
+sudo docker stop na1 -t 1
+sudo docker stop na2 -t 1
+sudo docker stop na3 -t 1
+sudo docker stop na4 -t 1
+
+sudo docker rm na2
+sudo docker rm na1
+sudo docker rm na3
+sudo docker rm na4
+
+echo "Creating Transponder Agents"
+
+ ./startExtraNetConfigAgent.sh
+
+
+echo "Creating Roadms Agents"
+
+
+screen -dmS t3 -T xterm sh -c 'docker run -p 10.0.2.4:2025:2022 -v  ~/tfs-ctrl/src/tests/ofc24/tempOC/files:/files --name na3 -it asgamb1/flexscale-node.img:latest bash '
+screen -dmS t4 -T xterm sh -c 'docker run -p 10.0.2.4:2026:2022 -v  ~/tfs-ctrl/src/tests/ofc24/tempOC/files:/files --name na4 -it asgamb1/flexscale-node.img:latest bash '
+sleep 4
+
+echo "starting Roadm1 "
+
+if [ "$( docker container  inspect -f '{{.State.Running}}' na4)" = "true" ]; then 
+        docker exec  na4   sh -c " cp /files/platform_r2.xml init_openconfig-platform.xml; 
+                                  cp /files/startNetconfAgent.sh startNetconfAgent.sh;
+                                  /confd/examples.confd/OC23/startNetconfAgent.sh ;"&
+      
+else 
+        echo "na4  is not running yet"
+fi
+
+
+echo "starting Roadm2 "
+
+
+
+if [ "$( docker container  inspect -f '{{.State.Running}}' na3)" = "true" ]; then 
+        docker exec  na3 sh -c " cp /files/platform_r1.xml init_openconfig-platform.xml;
+                                 cp /files/startNetconfAgent.sh startNetconfAgent.sh;
+                                 /confd/examples.confd/OC23/startNetconfAgent.sh; " 
+
+else 
+        echo "na3  is not running yet"
+fi
+
+
+# screen -S t3 -X stuff "cp ~/files/platform_r1.xml /confd/examples.confd/OC23/init_openconfig-platform.xml && ./startNetconfAgent.sh"
+# bash -c "docker  cp  ~/tfs-ctrl/src/tests/ofc24/tempOC/files/platform_r2.xml na4:/confd/examples.confd/OC23/init_openconfig-platform.xml;
+#  docker  cp   ~/tfs-ctrl/src/tests/ofc24/tempOC/files/startNetconfAgent.sh na4:/confd/examples.confd/OC23/startNetconfAgent.sh;"
diff --git a/src/tests/ofc24/deploy-node-agents.sh b/src/tests/ofc24/deploy-node-agents.sh
index 5c3c8d0d2a5c4e15f4d3dda6a00d90ff00b77539..1c1e455268ecb542eecc8f4292e931575145f415 100755
--- a/src/tests/ofc24/deploy-node-agents.sh
+++ b/src/tests/ofc24/deploy-node-agents.sh
@@ -17,8 +17,8 @@ TEST_NAME="ofc24"
 
 
 echo
-echo "Pre-deploy clean-up:"
-echo "--------------------"
+echo "Clean-up:"
+echo "---------"
 docker rm -f na-t1 na-t2 na-r1 na-r2
 docker network rm na-br
 
@@ -26,28 +26,29 @@ docker network rm na-br
 echo
 echo "Pull Docker images:"
 echo "-------------------"
-docker pull asgamb1/flexscale-hhi.img:latest
+docker pull asgamb1/oc23bgp.img:latest
 docker pull asgamb1/flexscale-node.img:latest
 
+
 echo
 echo "Create Management Network and Node Agents:"
 echo "------------------------------------------"
 docker network create -d bridge --subnet=172.254.253.0/24 --gateway=172.254.253.254 --ip-range=172.254.253.0/24 na-br
-docker run -d --name na-t1 --network=na-br --ip 172.254.253.1 \
-    --volume "$PWD/src/tests/${TEST_NAME}/startNetconfAgent.sh:/confd/examples.confd/OC23/startNetconfAgent.sh" \
-    --volume "$PWD/src/tests/${TEST_NAME}/platform_t1.xml:/confd/examples.confd/OC23/init_openconfig-platform.xml" \
-    asgamb1/flexscale-hhi.img:latest /confd/examples.confd/OC23/startNetconfAgent.sh
-docker run -d --name na-t2 --network=na-br --ip 172.254.253.2 \
-    --volume "$PWD/src/tests/${TEST_NAME}/startNetconfAgent.sh:/confd/examples.confd/OC23/startNetconfAgent.sh" \
-    --volume "$PWD/src/tests/${TEST_NAME}/platform_t2.xml:/confd/examples.confd/OC23/init_openconfig-platform.xml" \
-    asgamb1/flexscale-hhi.img:latest /confd/examples.confd/OC23/startNetconfAgent.sh
-docker run -d --name na-r1 --network=na-br --ip 172.254.253.101 \
-    --volume "$PWD/src/tests/${TEST_NAME}/startNetconfAgent.sh:/confd/examples.confd/OC23/startNetconfAgent.sh" \
-    --volume "$PWD/src/tests/${TEST_NAME}/platform_r1.xml:/confd/examples.confd/OC23/init_openconfig-platform.xml" \
+docker run -dit --init --name na-t1 --network=na-br --ip 172.254.253.101 \
+    --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/startNetconfAgent-tp.sh:/confd/examples.confd/OC23/startNetconfAgent.sh" \
+    --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/platform_t1.xml:/confd/examples.confd/OC23/platform.xml" \
+    asgamb1/oc23bgp.img:latest /confd/examples.confd/OC23/startNetconfAgent.sh
+docker run -dit --init --name na-t2 --network=na-br --ip 172.254.253.102 \
+    --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/startNetconfAgent-tp.sh:/confd/examples.confd/OC23/startNetconfAgent.sh" \
+    --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/platform_t2.xml:/confd/examples.confd/OC23/platform.xml" \
+    asgamb1/oc23bgp.img:latest /confd/examples.confd/OC23/startNetconfAgent.sh
+docker run -dit --init --name na-r1 --network=na-br --ip 172.254.253.201 \
+    --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/startNetconfAgent-mg-on.sh:/confd/examples.confd/OC23/startNetconfAgent.sh" \
+    --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/platform_r1.xml:/confd/examples.confd/OC23/platform.xml" \
     asgamb1/flexscale-node.img:latest /confd/examples.confd/OC23/startNetconfAgent.sh
-docker run -d --name na-r2 --network=na-br --ip 172.254.253.102 \
-    --volume "$PWD/src/tests/${TEST_NAME}/startNetconfAgent.sh:/confd/examples.confd/OC23/startNetconfAgent.sh" \
-    --volume "$PWD/src/tests/${TEST_NAME}/platform_r2.xml:/confd/examples.confd/OC23/init_openconfig-platform.xml" \
+docker run -dit --init --name na-r2 --network=na-br --ip 172.254.253.202 \
+    --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/startNetconfAgent-mg-on.sh:/confd/examples.confd/OC23/startNetconfAgent.sh" \
+    --volume "$PWD/src/tests/${TEST_NAME}/node-agents-config/platform_r2.xml:/confd/examples.confd/OC23/platform.xml" \
     asgamb1/flexscale-node.img:latest /confd/examples.confd/OC23/startNetconfAgent.sh
 
 
@@ -55,13 +56,11 @@ echo
 echo "Waiting for initialization..."
 echo "-----------------------------"
 docker ps -a
-sleep 5
-docker ps -a
 while ! docker logs na-t1 2>&1 | grep -q '*** ConfD OpenConfig NETCONF agent ***'; do sleep 1; done
 while ! docker logs na-t2 2>&1 | grep -q '*** ConfD OpenConfig NETCONF agent ***'; do sleep 1; done
 while ! docker logs na-r1 2>&1 | grep -q '*** ConfD OpenConfig NETCONF agent ***'; do sleep 1; done
 while ! docker logs na-r2 2>&1 | grep -q '*** ConfD OpenConfig NETCONF agent ***'; do sleep 1; done
-sleep 2
+sleep 3
 docker ps -a
 
 
@@ -69,16 +68,10 @@ echo
 echo "Dump Node Agent status:"
 echo "-----------------------"
 docker ps -a
-#docker logs na-t1
-#docker logs na-t2
-#docker logs na-r1
-#docker logs na-r2
-
+docker logs na-t1
+docker logs na-t2
+docker logs na-r1
+docker logs na-r2
 
-#echo
-#echo "Post-test clean-up:"
-#echo "-------------------"
-#docker rm -f na-t1 na-t2 na-r1 na-r2
-#docker network rm na-br
 
 echo "Done!"
diff --git a/src/tests/ofc24/deploy_specs.sh b/src/tests/ofc24/deploy_specs.sh
index ca5494de25ea17c08c2df1f2d62923c59b0e81e2..4ade7592363981bb8d51612fa9339b93b53dd4c3 100755
--- a/src/tests/ofc24/deploy_specs.sh
+++ b/src/tests/ofc24/deploy_specs.sh
@@ -30,7 +30,14 @@ export TFS_COMPONENTS="context device pathcomp service slice nbi webui"
 #export TFS_COMPONENTS="${TFS_COMPONENTS} bgpls_speaker"
 
 # Uncomment to activate Optical Controller
-export TFS_COMPONENTS="${TFS_COMPONENTS} opticalcontroller"
+# To manage optical connections, "service" requires "opticalcontroller" to be deployed
+# before "service", thus we "hack" the TFS_COMPONENTS environment variable prepending the
+# "opticalcontroller" only if "service" is already in TFS_COMPONENTS, and re-export it.
+if [[ "$TFS_COMPONENTS" == *"service"* ]]; then
+    BEFORE="${TFS_COMPONENTS% service*}"
+    AFTER="${TFS_COMPONENTS#* service}"
+    export TFS_COMPONENTS="${BEFORE} opticalcontroller service ${AFTER}"
+fi
 
 # Uncomment to activate ZTP
 #export TFS_COMPONENTS="${TFS_COMPONENTS} ztp"
@@ -63,7 +70,7 @@ export TFS_K8S_NAMESPACE="tfs"
 export TFS_EXTRA_MANIFESTS="manifests/nginx_ingress_http.yaml"
 
 # Uncomment to monitor performance of components
-export TFS_EXTRA_MANIFESTS="${TFS_EXTRA_MANIFESTS} manifests/servicemonitors.yaml"
+#export TFS_EXTRA_MANIFESTS="${TFS_EXTRA_MANIFESTS} manifests/servicemonitors.yaml"
 
 # Uncomment when deploying Optical CyberSecurity
 #export TFS_EXTRA_MANIFESTS="${TFS_EXTRA_MANIFESTS} manifests/cachingservice.yaml"
diff --git a/src/tests/ofc24/1.context.json b/src/tests/ofc24/descriptors/old/1.context.json
similarity index 100%
rename from src/tests/ofc24/1.context.json
rename to src/tests/ofc24/descriptors/old/1.context.json
diff --git a/src/tests/ofc24/2.device1.json b/src/tests/ofc24/descriptors/old/2.device1.json
similarity index 95%
rename from src/tests/ofc24/2.device1.json
rename to src/tests/ofc24/descriptors/old/2.device1.json
index 3e31f31eb84630415f96b6af1e6ae5d34bdb1c89..c5a189e3165f4d170fb1c9e8b13314a202a84630 100755
--- a/src/tests/ofc24/2.device1.json
+++ b/src/tests/ofc24/descriptors/old/2.device1.json
@@ -41,7 +41,7 @@
                         "action": 1,
                         "custom": {
                             "resource_key": "_connect/address",
-                            "resource_value": "10.0.2.15"
+                            "resource_value": "10.0.2.4"
                         }
                     },
                     {
diff --git a/src/tests/ofc24/3.device2.json b/src/tests/ofc24/descriptors/old/3.device2.json
similarity index 95%
rename from src/tests/ofc24/3.device2.json
rename to src/tests/ofc24/descriptors/old/3.device2.json
index 812affa7b8540b67f83d6f3c9bb9b5442c44fd0d..a38fc290508788637a1ebc1cef7ddc54514a46fe 100755
--- a/src/tests/ofc24/3.device2.json
+++ b/src/tests/ofc24/descriptors/old/3.device2.json
@@ -41,7 +41,7 @@
                         "action": 1,
                         "custom": {
                             "resource_key": "_connect/address",
-                            "resource_value": "10.0.2.15"
+                            "resource_value": "10.0.2.4"
                         }
                     },
                     {
diff --git a/src/tests/ofc24/4.device3_R1.json b/src/tests/ofc24/descriptors/old/4.device3_R1.json
similarity index 96%
rename from src/tests/ofc24/4.device3_R1.json
rename to src/tests/ofc24/descriptors/old/4.device3_R1.json
index 3a57ba79cd2ff8aa6d4b666ac382932ade2f20e0..1c110f20ecb6c2d5081044c961dbf50e3d4c816d 100755
--- a/src/tests/ofc24/4.device3_R1.json
+++ b/src/tests/ofc24/descriptors/old/4.device3_R1.json
@@ -107,7 +107,7 @@
                         "action": 1,
                         "custom": {
                             "resource_key": "_connect/address",
-                            "resource_value": "10.0.2.15"
+                            "resource_value": "10.0.2.4"
                         }
                     },
                     {
diff --git a/src/tests/ofc24/5.device4_R2.json b/src/tests/ofc24/descriptors/old/5.device4_R2.json
similarity index 96%
rename from src/tests/ofc24/5.device4_R2.json
rename to src/tests/ofc24/descriptors/old/5.device4_R2.json
index 9b1968d095c3e2c28c058b22f7295d7d1cbda380..43ebda5c6c139b4f2d8b2a51e7f42a257a38b4d4 100755
--- a/src/tests/ofc24/5.device4_R2.json
+++ b/src/tests/ofc24/descriptors/old/5.device4_R2.json
@@ -108,7 +108,7 @@
                         "action": 1,
                         "custom": {
                             "resource_key": "_connect/address",
-                            "resource_value": "10.0.2.15"
+                            "resource_value": "10.0.2.4"
                         }
                     },
                     {
diff --git a/src/tests/ofc24/6.links.json b/src/tests/ofc24/descriptors/old/6.links.json
similarity index 100%
rename from src/tests/ofc24/6.links.json
rename to src/tests/ofc24/descriptors/old/6.links.json
diff --git a/src/tests/ofc24/7.service-bidir.json b/src/tests/ofc24/descriptors/service-bidir.json
similarity index 100%
rename from src/tests/ofc24/7.service-bidir.json
rename to src/tests/ofc24/descriptors/service-bidir.json
diff --git a/src/tests/ofc24/7.service-unidir.json b/src/tests/ofc24/descriptors/service-unidir.json
similarity index 100%
rename from src/tests/ofc24/7.service-unidir.json
rename to src/tests/ofc24/descriptors/service-unidir.json
diff --git a/src/tests/ofc24/descriptors_topology.json b/src/tests/ofc24/descriptors/topology.json
similarity index 96%
rename from src/tests/ofc24/descriptors_topology.json
rename to src/tests/ofc24/descriptors/topology.json
index 6ae521c7642b24d428b26b11c29882ca46995014..85bbad55eb8608d2d2a7abad7fffab8fffdae682 100644
--- a/src/tests/ofc24/descriptors_topology.json
+++ b/src/tests/ofc24/descriptors/topology.json
@@ -16,8 +16,8 @@
                 }}
             ],
             "device_config": {"config_rules": [
-                {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}},
-                {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2023"}},
+                {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "172.254.253.101"}},
+                {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2022"}},
                 {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {
                     "username": "admin", "password": "admin", "force_running": false, "hostkey_verify": false,
                     "look_for_keys": false, "allow_agent": false, "commit_per_rule": false,
@@ -36,8 +36,8 @@
                 }}
             ],
             "device_config": {"config_rules": [
-                {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}},
-                {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2024"}},
+                {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "172.254.253.102"}},
+                {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2022"}},
                 {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {
                     "username": "admin", "password": "admin", "force_running": false, "hostkey_verify": false,
                     "look_for_keys": false, "allow_agent": false, "commit_per_rule": false,
@@ -68,8 +68,8 @@
                 }}
             ],
             "device_config": {"config_rules": [
-                {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}},
-                {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2025"}},
+                {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "172.254.253.201"}},
+                {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2022"}},
                 {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {
                     "username": "admin", "password": "admin", "force_running": false, "hostkey_verify": false,
                     "look_for_keys": false, "allow_agent": false, "commit_per_rule": false,
@@ -105,8 +105,8 @@
                 }}
             ],
             "device_config": {"config_rules": [
-                {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}},
-                {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2026"}},
+                {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "172.254.253.202"}},
+                {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "2022"}},
                 {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {
                     "username": "admin", "password": "admin", "force_running": false, "hostkey_verify": false,
                     "look_for_keys": false, "allow_agent": false, "commit_per_rule": false,
diff --git a/src/tests/ofc24/destroy-node-agents.sh b/src/tests/ofc24/destroy-node-agents.sh
new file mode 100755
index 0000000000000000000000000000000000000000..19e7fc9a9398734aa967cfb5618d125c545500a2
--- /dev/null
+++ b/src/tests/ofc24/destroy-node-agents.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+echo
+echo "Clean-up:"
+echo "---------"
+docker rm -f na-t1 na-t2 na-r1 na-r2
+docker network rm na-br
+
+echo "Done!"
diff --git a/src/tests/ofc24/platform_r1.xml b/src/tests/ofc24/node-agents-config/platform_r1.xml
old mode 100755
new mode 100644
similarity index 100%
rename from src/tests/ofc24/platform_r1.xml
rename to src/tests/ofc24/node-agents-config/platform_r1.xml
diff --git a/src/tests/ofc24/platform_r2.xml b/src/tests/ofc24/node-agents-config/platform_r2.xml
old mode 100755
new mode 100644
similarity index 100%
rename from src/tests/ofc24/platform_r2.xml
rename to src/tests/ofc24/node-agents-config/platform_r2.xml
diff --git a/src/tests/ofc24/platform_t1.xml b/src/tests/ofc24/node-agents-config/platform_t1.xml
old mode 100755
new mode 100644
similarity index 100%
rename from src/tests/ofc24/platform_t1.xml
rename to src/tests/ofc24/node-agents-config/platform_t1.xml
diff --git a/src/tests/ofc24/platform_t2.xml b/src/tests/ofc24/node-agents-config/platform_t2.xml
old mode 100755
new mode 100644
similarity index 100%
rename from src/tests/ofc24/platform_t2.xml
rename to src/tests/ofc24/node-agents-config/platform_t2.xml
diff --git a/src/tests/ofc24/node-agents-config/startNetconfAgent-mg-on.sh b/src/tests/ofc24/node-agents-config/startNetconfAgent-mg-on.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e54496b408f055853aa396e28aa040a2052293fa
--- /dev/null
+++ b/src/tests/ofc24/node-agents-config/startNetconfAgent-mg-on.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+echo 'Cleaning...'
+make clean
+
+echo 'Rebuilding...'
+make all
+
+echo 'Initializing database...'
+cp platform.xml confd-cdb/
+
+echo 'Starting ConfD...'
+make start2
+
+echo 'ConfD Ready!!'
diff --git a/src/tests/ofc24/node-agents-config/startNetconfAgent-tp.sh b/src/tests/ofc24/node-agents-config/startNetconfAgent-tp.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4e2ec068662b13c82248575478b4c88832d45e5f
--- /dev/null
+++ b/src/tests/ofc24/node-agents-config/startNetconfAgent-tp.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+echo 'Cleaning...'
+make clean
+
+echo 'Rebuilding...'
+make all
+
+echo 'Initializing database...'
+cp platform.xml confd-cdb/
+cp interfaces.xml confd-cdb/
+cp bgp.xml confd-cdb/
+
+echo 'Starting ConfD...'
+make start2
+
+echo 'ConfD Ready!!'
diff --git a/src/tests/ofc24/run-tests-locally.sh b/src/tests/ofc24/run-tests-locally.sh
new file mode 100755
index 0000000000000000000000000000000000000000..14cf78500d7d61789129b89cdfffe0f28e793aa5
--- /dev/null
+++ b/src/tests/ofc24/run-tests-locally.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+source ~/tfs-ctrl/tfs_runtime_env_vars.sh
+pytest --verbose --log-level=INFO ~/tfs-ctrl/ofc24/tests/test_functional_bootstrap.py
+pytest --verbose --log-level=INFO ~/tfs-ctrl/ofc24/tests/test_functional_create_service_unidir.py
+pytest --verbose --log-level=INFO ~/tfs-ctrl/ofc24/tests/test_functional_delete_service_unidir.py
+pytest --verbose --log-level=INFO ~/tfs-ctrl/ofc24/tests/test_functional_create_service_bidir.py
+pytest --verbose --log-level=INFO ~/tfs-ctrl/ofc24/tests/test_functional_delete_service_bidir.py
+pytest --verbose --log-level=INFO ~/tfs-ctrl/ofc24/tests/test_functional_cleanup.py
diff --git a/src/tests/ofc24/startExtraNetConfigAgent.sh b/src/tests/ofc24/startExtraNetConfigAgent.sh
deleted file mode 100755
index d9428585ef1040bb0440bf6db100b7f2bc71c970..0000000000000000000000000000000000000000
--- a/src/tests/ofc24/startExtraNetConfigAgent.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash
-# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-DOCKER_CONTAINER=$1
-DOCKER_PORT=$2
-
-if [ -n "$DOCKER_CONTAINER" ] && [ -n "$DOCKER_PORT" ];then
-      sudo docker stop "$DOCKER_CONTAINER" -t 1
-      sudo docker rm "$DOCKER_CONTAINER"
-
-      echo "Creating TPs"
-      screen -dmS t1 -T xterm sh -c "docker run -p 10.0.2.15:"$DOCKER_PORT":2022 -v ~/tfs-ctrl/tempOC/files:/files --name $DOCKER_CONTAINER -it asgamb1/oc23bgp.img:latest"
-      sleep  2 
-      if [ "$( docker container  inspect -f '{{.State.Running}}' "$DOCKER_CONTAINER")" = "true" ]; then 
-            docker exec  "$DOCKER_CONTAINER"  cp /files/demoECOC21_4.xml demoECOC21.xml
-            docker exec "$DOCKER_CONTAINER" /confd/examples.confd/OC23/startNetconfAgent.sh 
-      else 
-            echo "your container is not running yet"
-      fi
-else 
-   echo "Please define the docker container name and port"
-fi         
diff --git a/src/tests/ofc24/startNetconfAgent.sh b/src/tests/ofc24/startNetconfAgent.sh
deleted file mode 100755
index 10b721883799c4fd257e1f627ff1480259037702..0000000000000000000000000000000000000000
--- a/src/tests/ofc24/startNetconfAgent.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-make clean
-make all
-#make init
-cp init_openconfig-platform.xml confd-cdb/
-#cp init_flex-scale-mg-on.xml confd-cdb/
-make start2
diff --git a/src/tests/ofc24/start_topo.sh b/src/tests/ofc24/start_topo.sh
deleted file mode 100755
index c924064763c14e4da45344cd21f4d9c81c9640a9..0000000000000000000000000000000000000000
--- a/src/tests/ofc24/start_topo.sh
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/bash
-# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-IMAGE_NAME="asgamb1/oc23bgp.img:latest"
-DOCKER_CONTAINER=$1
-DOCKER_PORT="2022"
-
-sudo docker stop na1 -t 1
-sudo docker stop na2 -t 1
-sudo docker stop na3 -t 1
-sudo docker stop na4 -t 1
-
-sudo docker rm na2
-sudo docker rm na1
-sudo docker rm na3
-sudo docker rm na4
-
-echo "Creating Transponder Agents"
-
-# if ! docker image inspect "$IMAGE_NAME" >/dev/null 2>&1 ; then
-#    echo "asgamb1/oc23bgp.img:latest not existed ! "
-#    screen -dmS t3 -T xterm sh -c "docker run -p 10.0.2.15:2025:2022 -v ~/tempOC/files:/files --name na -it  $IMAGE_NAME bash"
-#    echo 'start downloading  asgamb1/oc23bgp.img:latest , it may take few minutes ! .... ' 
-#    while [ "$(docker image inspect asgamb1/oc23bgp.img:latest 2>/dev/null)" == "[]" ]; do
-#         sleep 1
-# done
-
-#fi
-
-
-
-screen -dmS t1 -T xterm sh -c "docker run  -p 127.0.0.1:2023:2022 -v ~/tempOC/files:/files --name $DOCKER_CONTAINER -it asgamb1/oc23bgp.img:latest bash"
-sleep  2 
-if [ "$( docker container  inspect -f '{{.State.Running}}' "$DOCKER_CONTAINER")" = "true" ]; then 
-        docker exec  "$DOCKER_CONTAINER"  cp /files/demoECOC21_4.xml demoECOC21.xml
-        docker exec "$DOCKER_CONTAINER" /confd/examples.confd/OC23/startNetconfAgent.sh 
-else 
-        echo "your container is not running yet"
-fi
-
-echo " It may take a while , Hang on ..."
-source "./startExtraNetConfigAgent.sh"  "na1" "2023"
-sleep 3
-
-source "./startExtraNetConfigAgent.sh"  "na2" "2024"
-sleep 3
-
-bash -c "cp /tempOC/files/plat_r1.xml /confd/examples.confd/OC23/init_openconfig-platform.xml; ./startNetconfAgent.sh"
-bash -c "cp /tempOC/files/plat_r2.xml /confd/examples.confd/OC23/init_openconfig-platform.xml; ./startNetconfAgent.sh"
-screen -dmS t3 -T xterm sh -c 'docker run -p 10.0.2.15:2025:2022 -v ~/tfs-ctrl/tempOC/files:/files --name na3 -it asgamb1/flexscale-node.img:latest ./startNetconfAgent.sh'
-screen -dmS t4 -T xterm sh -c 'docker run -p 10.0.2.15:2026:2022 -v ~/tfs-ctrl/tempOC/files:/files --name na4 -it asgamb1/flexscale-node.img:latest ./startNetconfAgent.sh'
diff --git a/src/tests/ofc24/tests/test_functional_bootstrap.py b/src/tests/ofc24/tests/test_functional_bootstrap.py
index bc648d16de57c8c287c7d601f994cb81ed45bc04..e6562f8a2f95f3d1f504b2bbc5dd6dc3b4c47077 100644
--- a/src/tests/ofc24/tests/test_functional_bootstrap.py
+++ b/src/tests/ofc24/tests/test_functional_bootstrap.py
@@ -24,7 +24,7 @@ from tests.Fixtures import context_client, device_client # pylint: disable=unuse
 LOGGER = logging.getLogger(__name__)
 LOGGER.setLevel(logging.DEBUG)
 
-DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors_topology.json')
+DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'topology.json')
 ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
 
 def test_scenario_bootstrap(
diff --git a/src/tests/ofc24/tests/test_functional_cleanup.py b/src/tests/ofc24/tests/test_functional_cleanup.py
index 5f1ce23f13051759e0e688a42c7118eaff8d3c72..281b0969d708d07be8bdda0aca83b8976d6fa1dd 100644
--- a/src/tests/ofc24/tests/test_functional_cleanup.py
+++ b/src/tests/ofc24/tests/test_functional_cleanup.py
@@ -24,7 +24,7 @@ from tests.Fixtures import context_client, device_client    # pylint: disable=un
 LOGGER = logging.getLogger(__name__)
 LOGGER.setLevel(logging.DEBUG)
 
-DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors_topology.json')
+DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'topology.json')
 ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
 
 def test_scenario_cleanup(
diff --git a/src/tests/ofc24/tests/test_functional_create_service.py b/src/tests/ofc24/tests/test_functional_create_service.py
deleted file mode 100644
index 74c74483eb82325afec2cae833ebd460566da153..0000000000000000000000000000000000000000
--- a/src/tests/ofc24/tests/test_functional_create_service.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import logging, os, random
-from common.Constants import DEFAULT_CONTEXT_NAME
-from common.proto.context_pb2 import ContextId, Empty, ServiceTypeEnum
-from common.proto.kpi_sample_types_pb2 import KpiSampleType
-from common.tools.descriptor.Loader import DescriptorLoader
-from common.tools.grpc.Tools import grpc_message_to_json_string
-from common.tools.object_factory.Context import json_context_id
-from context.client.ContextClient import ContextClient
-from monitoring.client.MonitoringClient import MonitoringClient
-from tests.Fixtures import context_client, monitoring_client                    # pylint: disable=unused-import
-from tests.tools.mock_osm.MockOSM import MockOSM
-from .Fixtures import osm_wim                                                   # pylint: disable=unused-import
-from .Objects import WIM_SERVICE_CONNECTION_POINTS, WIM_SERVICE_TYPE
-
-LOGGER = logging.getLogger(__name__)
-LOGGER.setLevel(logging.DEBUG)
-
-DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors_emulated.json')
-ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
-
-def test_service_creation(context_client : ContextClient, osm_wim : MockOSM): # pylint: disable=redefined-outer-name
-    # Load descriptors and validate the base scenario
-    descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client)
-    descriptor_loader.validate()
-
-    # Verify the scenario has no services/slices
-    response = context_client.GetContext(ADMIN_CONTEXT_ID)
-    assert len(response.service_ids) == 0
-    assert len(response.slice_ids) == 0
-
-    # Create Connectivity Service
-    service_uuid = osm_wim.create_connectivity_service(WIM_SERVICE_TYPE, WIM_SERVICE_CONNECTION_POINTS)
-    osm_wim.get_connectivity_service_status(service_uuid)
-
-    # Ensure slices and services are created
-    response = context_client.ListSlices(ADMIN_CONTEXT_ID)
-    LOGGER.info('Slices[{:d}] = {:s}'.format(len(response.slices), grpc_message_to_json_string(response)))
-    assert len(response.slices) == 1 # OSM slice
-
-    response = context_client.ListServices(ADMIN_CONTEXT_ID)
-    LOGGER.info('Services[{:d}] = {:s}'.format(len(response.services), grpc_message_to_json_string(response)))
-    assert len(response.services) == 2 # 1xL3NM + 1xTAPI
-
-    for service in response.services:
-        service_id = service.service_id
-        response = context_client.ListConnections(service_id)
-        LOGGER.info('  ServiceId[{:s}] => Connections[{:d}] = {:s}'.format(
-            grpc_message_to_json_string(service_id), len(response.connections), grpc_message_to_json_string(response)))
-
-        if service.service_type == ServiceTypeEnum.SERVICETYPE_L3NM:
-            assert len(response.connections) == 1 # 1 connection per service
-        elif service.service_type == ServiceTypeEnum.SERVICETYPE_TAPI_CONNECTIVITY_SERVICE:
-            assert len(response.connections) == 1 # 1 connection per service
-        else:
-            str_service = grpc_message_to_json_string(service)
-            raise Exception('Unexpected ServiceType: {:s}'.format(str_service))
-
-
-def test_scenario_kpi_values_created(
-    monitoring_client: MonitoringClient,    # pylint: disable=redefined-outer-name
-) -> None:
-    """
-    This test validates that KPI values have been inserted into the monitoring database.
-    We short k KPI descriptors to test.
-    """
-    response = monitoring_client.GetKpiDescriptorList(Empty())
-    kpi_descriptors = random.choices(response.kpi_descriptor_list, k=2)
-
-    for kpi_descriptor in kpi_descriptors:
-        MSG = 'KPI(kpi_uuid={:s}, device_uuid={:s}, endpoint_uuid={:s}, service_uuid={:s}, kpi_sample_type={:s})...'
-        LOGGER.info(MSG.format(
-            str(kpi_descriptor.kpi_id.kpi_id.uuid), str(kpi_descriptor.device_id.device_uuid.uuid),
-            str(kpi_descriptor.endpoint_id.endpoint_uuid.uuid), str(kpi_descriptor.service_id.service_uuid.uuid),
-            str(KpiSampleType.Name(kpi_descriptor.kpi_sample_type))))
-        response = monitoring_client.GetInstantKpi(kpi_descriptor.kpi_id)
-        kpi_uuid = response.kpi_id.kpi_id.uuid
-        assert kpi_uuid == kpi_descriptor.kpi_id.kpi_id.uuid
-        kpi_value_type = response.kpi_value.WhichOneof('value')
-        if kpi_value_type is None:
-            MSG = '  KPI({:s}): No instant value found'
-            LOGGER.warning(MSG.format(str(kpi_uuid)))
-        else:
-            kpi_timestamp = response.timestamp.timestamp
-            assert kpi_timestamp > 0
-            assert kpi_value_type == 'floatVal'
-            kpi_value = getattr(response.kpi_value, kpi_value_type)
-            MSG = '  KPI({:s}): timestamp={:s} value_type={:s} value={:s}'
-            LOGGER.info(MSG.format(str(kpi_uuid), str(kpi_timestamp), str(kpi_value_type), str(kpi_value)))
diff --git a/src/tests/ofc24/tests/test_functional_create_service_bidir.py b/src/tests/ofc24/tests/test_functional_create_service_bidir.py
new file mode 100644
index 0000000000000000000000000000000000000000..e910c946d509a814415019c01a19b1058934e47a
--- /dev/null
+++ b/src/tests/ofc24/tests/test_functional_create_service_bidir.py
@@ -0,0 +1,72 @@
+# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import logging, os
+from common.Constants import DEFAULT_CONTEXT_NAME
+from common.proto.context_pb2 import ContextId, ServiceStatusEnum, ServiceTypeEnum
+from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results
+from common.tools.grpc.Tools import grpc_message_to_json_string
+from common.tools.object_factory.Context import json_context_id
+from context.client.ContextClient import ContextClient
+from device.client.DeviceClient import DeviceClient
+from service.client.ServiceClient import ServiceClient
+from tests.Fixtures import context_client, device_client, service_client        # pylint: disable=unused-import
+
+LOGGER = logging.getLogger(__name__)
+LOGGER.setLevel(logging.DEBUG)
+
+DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'service-bidir.json')
+ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
+
+def test_service_creation_bidir(
+    context_client : ContextClient, # pylint: disable=redefined-outer-name
+    device_client  : DeviceClient,  # pylint: disable=redefined-outer-name
+    service_client : ServiceClient, # pylint: disable=redefined-outer-name
+):
+    # Load descriptors and validate the base scenario
+    descriptor_loader = DescriptorLoader(
+        descriptors_file=DESCRIPTOR_FILE, context_client=context_client, device_client=device_client,
+        service_client=service_client
+    )
+    results = descriptor_loader.process()
+    check_descriptor_load_results(results, descriptor_loader)
+
+    # Verify the scenario has 1 service and 0 slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.service_ids) == 1
+    assert len(response.slice_ids) == 0
+
+    # Check there are no slices
+    response = context_client.ListSlices(ADMIN_CONTEXT_ID)
+    LOGGER.warning('Slices[{:d}] = {:s}'.format(len(response.slices), grpc_message_to_json_string(response)))
+    assert len(response.slices) == 0
+
+    # Check there is 1 service
+    response = context_client.ListServices(ADMIN_CONTEXT_ID)
+    LOGGER.warning('Services[{:d}] = {:s}'.format(len(response.services), grpc_message_to_json_string(response)))
+    assert len(response.services) == 1
+
+    for service in response.services:
+        service_id = service.service_id
+        assert service.service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE
+
+        response = context_client.ListConnections(service_id)
+        LOGGER.warning('  ServiceId[{:s}] => Connections[{:d}] = {:s}'.format(
+            grpc_message_to_json_string(service_id), len(response.connections), grpc_message_to_json_string(response)))
+
+        if service.service_type == ServiceTypeEnum.SERVICETYPE_OPTICAL_CONNECTIVITY:
+            assert len(response.connections) == 2
+        else:
+            str_service = grpc_message_to_json_string(service)
+            raise Exception('Unexpected ServiceType: {:s}'.format(str_service))
diff --git a/src/tests/ofc24/tests/test_functional_create_service_unidir.py b/src/tests/ofc24/tests/test_functional_create_service_unidir.py
new file mode 100644
index 0000000000000000000000000000000000000000..5b2550ae1e6f7ea9d51aec70af7af7b5c1360dc4
--- /dev/null
+++ b/src/tests/ofc24/tests/test_functional_create_service_unidir.py
@@ -0,0 +1,72 @@
+# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import logging, os
+from common.Constants import DEFAULT_CONTEXT_NAME
+from common.proto.context_pb2 import ContextId, ServiceStatusEnum, ServiceTypeEnum
+from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results
+from common.tools.grpc.Tools import grpc_message_to_json_string
+from common.tools.object_factory.Context import json_context_id
+from context.client.ContextClient import ContextClient
+from device.client.DeviceClient import DeviceClient
+from service.client.ServiceClient import ServiceClient
+from tests.Fixtures import context_client, device_client, service_client        # pylint: disable=unused-import
+
+LOGGER = logging.getLogger(__name__)
+LOGGER.setLevel(logging.DEBUG)
+
+DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'service-bidir.json')
+ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
+
+def test_service_creation_unidir(
+    context_client : ContextClient, # pylint: disable=redefined-outer-name
+    device_client  : DeviceClient,  # pylint: disable=redefined-outer-name
+    service_client : ServiceClient, # pylint: disable=redefined-outer-name
+):
+    # Load descriptors and validate the base scenario
+    descriptor_loader = DescriptorLoader(
+        descriptors_file=DESCRIPTOR_FILE, context_client=context_client, device_client=device_client,
+        service_client=service_client
+    )
+    results = descriptor_loader.process()
+    check_descriptor_load_results(results, descriptor_loader)
+
+    # Verify the scenario has 1 service and 0 slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.service_ids) == 1
+    assert len(response.slice_ids) == 0
+
+    # Check there are no slices
+    response = context_client.ListSlices(ADMIN_CONTEXT_ID)
+    LOGGER.warning('Slices[{:d}] = {:s}'.format(len(response.slices), grpc_message_to_json_string(response)))
+    assert len(response.slices) == 0
+
+    # Check there is 1 service
+    response = context_client.ListServices(ADMIN_CONTEXT_ID)
+    LOGGER.warning('Services[{:d}] = {:s}'.format(len(response.services), grpc_message_to_json_string(response)))
+    assert len(response.services) == 1
+
+    for service in response.services:
+        service_id = service.service_id
+        assert service.service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE
+
+        response = context_client.ListConnections(service_id)
+        LOGGER.warning('  ServiceId[{:s}] => Connections[{:d}] = {:s}'.format(
+            grpc_message_to_json_string(service_id), len(response.connections), grpc_message_to_json_string(response)))
+
+        if service.service_type == ServiceTypeEnum.SERVICETYPE_OPTICAL_CONNECTIVITY:
+            assert len(response.connections) == 2
+        else:
+            str_service = grpc_message_to_json_string(service)
+            raise Exception('Unexpected ServiceType: {:s}'.format(str_service))
diff --git a/src/tests/ofc24/tests/test_functional_delete_service.py b/src/tests/ofc24/tests/test_functional_delete_service.py
deleted file mode 100644
index daff29064f07e8117a4503fc243c7acac9f88bc6..0000000000000000000000000000000000000000
--- a/src/tests/ofc24/tests/test_functional_delete_service.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import logging, os
-from common.Constants import DEFAULT_CONTEXT_NAME
-from common.proto.context_pb2 import ContextId, ServiceTypeEnum
-from common.tools.descriptor.Loader import DescriptorLoader
-from common.tools.grpc.Tools import grpc_message_to_json_string
-from common.tools.object_factory.Context import json_context_id
-from context.client.ContextClient import ContextClient
-from tests.Fixtures import context_client   # pylint: disable=unused-import
-from tests.tools.mock_osm.MockOSM import MockOSM
-from .Fixtures import osm_wim               # pylint: disable=unused-import
-
-LOGGER = logging.getLogger(__name__)
-LOGGER.setLevel(logging.DEBUG)
-
-DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors_emulated.json')
-ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
-
-def test_service_removal(context_client : ContextClient, osm_wim : MockOSM): # pylint: disable=redefined-outer-name
-    # Ensure slices and services are created
-    response = context_client.ListSlices(ADMIN_CONTEXT_ID)
-    LOGGER.info('Slices[{:d}] = {:s}'.format(len(response.slices), grpc_message_to_json_string(response)))
-    assert len(response.slices) == 1 # OSM slice
-
-    response = context_client.ListServices(ADMIN_CONTEXT_ID)
-    LOGGER.info('Services[{:d}] = {:s}'.format(len(response.services), grpc_message_to_json_string(response)))
-    assert len(response.services) == 2 # 1xL3NM + 1xTAPI
-
-    service_uuids = set()
-    for service in response.services:
-        service_id = service.service_id
-        response = context_client.ListConnections(service_id)
-        LOGGER.info('  ServiceId[{:s}] => Connections[{:d}] = {:s}'.format(
-            grpc_message_to_json_string(service_id), len(response.connections), grpc_message_to_json_string(response)))
-
-        if service.service_type == ServiceTypeEnum.SERVICETYPE_L3NM:
-            assert len(response.connections) == 1 # 1 connection per service
-            service_uuid = service_id.service_uuid.uuid
-            service_uuids.add(service_uuid)
-            osm_wim.conn_info[service_uuid] = {}
-        elif service.service_type == ServiceTypeEnum.SERVICETYPE_TAPI_CONNECTIVITY_SERVICE:
-            assert len(response.connections) == 1 # 1 connection per service
-        else:
-            str_service = grpc_message_to_json_string(service)
-            raise Exception('Unexpected ServiceType: {:s}'.format(str_service))
-
-    # Identify service to delete
-    assert len(service_uuids) == 1  # assume a single L3NM service has been created
-    service_uuid = set(service_uuids).pop()
-
-    # Delete Connectivity Service
-    osm_wim.delete_connectivity_service(service_uuid)
-
-    # Verify the scenario has no services/slices
-    response = context_client.GetContext(ADMIN_CONTEXT_ID)
-    assert len(response.service_ids) == 0
-    assert len(response.slice_ids) == 0
-
-    # Load descriptors and validate the base scenario
-    descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client)
-    descriptor_loader.validate()
diff --git a/src/tests/ofc24/tests/test_functional_delete_service_bidir.py b/src/tests/ofc24/tests/test_functional_delete_service_bidir.py
new file mode 100644
index 0000000000000000000000000000000000000000..a337336a87535a89aa6ca176d56e40d33dcb1aca
--- /dev/null
+++ b/src/tests/ofc24/tests/test_functional_delete_service_bidir.py
@@ -0,0 +1,78 @@
+# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import logging
+from typing import Set, Tuple
+from common.Constants import DEFAULT_CONTEXT_NAME
+from common.proto.context_pb2 import ContextId, ServiceId, ServiceStatusEnum, ServiceTypeEnum
+from common.tools.grpc.Tools import grpc_message_to_json_string
+from common.tools.object_factory.Context import json_context_id
+from common.tools.object_factory.Service import json_service_id
+from context.client.ContextClient import ContextClient
+from service.client.ServiceClient import ServiceClient
+from tests.Fixtures import context_client, service_client   # pylint: disable=unused-import
+
+LOGGER = logging.getLogger(__name__)
+LOGGER.setLevel(logging.DEBUG)
+
+ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
+
+def test_service_removal_bidir(
+    context_client : ContextClient, # pylint: disable=redefined-outer-name
+    service_client : ServiceClient, # pylint: disable=redefined-outer-name
+):
+    # Verify the scenario has 1 service and 0 slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.service_ids) == 1
+    assert len(response.slice_ids) == 0
+
+    # Check there are no slices
+    response = context_client.ListSlices(ADMIN_CONTEXT_ID)
+    LOGGER.warning('Slices[{:d}] = {:s}'.format(len(response.slices), grpc_message_to_json_string(response)))
+    assert len(response.slices) == 0
+
+    # Check there is 1 service
+    response = context_client.ListServices(ADMIN_CONTEXT_ID)
+    LOGGER.warning('Services[{:d}] = {:s}'.format(len(response.services), grpc_message_to_json_string(response)))
+    assert len(response.services) == 1
+
+    context_service_uuids : Set[Tuple[str, str]] = set()
+    for service in response.services:
+        service_id = service.service_id
+        assert service.service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE
+
+        response = context_client.ListConnections(service_id)
+        LOGGER.warning('  ServiceId[{:s}] => Connections[{:d}] = {:s}'.format(
+            grpc_message_to_json_string(service_id), len(response.connections), grpc_message_to_json_string(response)))
+
+        if service.service_type == ServiceTypeEnum.SERVICETYPE_OPTICAL_CONNECTIVITY:
+            assert len(response.connections) == 2
+            context_uuid = service_id.context_id.context_uuid.uuid
+            service_uuid = service_id.service_uuid.uuid
+            context_service_uuids.add((context_uuid, service_uuid))
+        else:
+            str_service = grpc_message_to_json_string(service)
+            raise Exception('Unexpected ServiceType: {:s}'.format(str_service))
+
+    # Identify service to delete
+    assert len(context_service_uuids) == 1
+    context_uuid, service_uuid = set(context_service_uuids).pop()
+
+    # Delete Service
+    service_client.DeleteService(ServiceId(**json_service_id(service_uuid, json_context_id(context_uuid))))
+
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.service_ids) == 0
+    assert len(response.slice_ids) == 0
diff --git a/src/tests/ofc24/tests/test_functional_delete_service_unidir.py b/src/tests/ofc24/tests/test_functional_delete_service_unidir.py
new file mode 100644
index 0000000000000000000000000000000000000000..9b0381c492bd1c0783aaf9872037bfefdd25fa37
--- /dev/null
+++ b/src/tests/ofc24/tests/test_functional_delete_service_unidir.py
@@ -0,0 +1,78 @@
+# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import logging
+from typing import Set, Tuple
+from common.Constants import DEFAULT_CONTEXT_NAME
+from common.proto.context_pb2 import ContextId, ServiceId, ServiceStatusEnum, ServiceTypeEnum
+from common.tools.grpc.Tools import grpc_message_to_json_string
+from common.tools.object_factory.Context import json_context_id
+from common.tools.object_factory.Service import json_service_id
+from context.client.ContextClient import ContextClient
+from service.client.ServiceClient import ServiceClient
+from tests.Fixtures import context_client, service_client   # pylint: disable=unused-import
+
+LOGGER = logging.getLogger(__name__)
+LOGGER.setLevel(logging.DEBUG)
+
+ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
+
+def test_service_removal_unidir(
+    context_client : ContextClient, # pylint: disable=redefined-outer-name
+    service_client : ServiceClient, # pylint: disable=redefined-outer-name
+):
+    # Verify the scenario has 1 service and 0 slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.service_ids) == 1
+    assert len(response.slice_ids) == 0
+
+    # Check there are no slices
+    response = context_client.ListSlices(ADMIN_CONTEXT_ID)
+    LOGGER.warning('Slices[{:d}] = {:s}'.format(len(response.slices), grpc_message_to_json_string(response)))
+    assert len(response.slices) == 0
+
+    # Check there is 1 service
+    response = context_client.ListServices(ADMIN_CONTEXT_ID)
+    LOGGER.warning('Services[{:d}] = {:s}'.format(len(response.services), grpc_message_to_json_string(response)))
+    assert len(response.services) == 1
+
+    context_service_uuids : Set[Tuple[str, str]] = set()
+    for service in response.services:
+        service_id = service.service_id
+        assert service.service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE
+
+        response = context_client.ListConnections(service_id)
+        LOGGER.warning('  ServiceId[{:s}] => Connections[{:d}] = {:s}'.format(
+            grpc_message_to_json_string(service_id), len(response.connections), grpc_message_to_json_string(response)))
+
+        if service.service_type == ServiceTypeEnum.SERVICETYPE_OPTICAL_CONNECTIVITY:
+            assert len(response.connections) == 2
+            context_uuid = service_id.context_id.context_uuid.uuid
+            service_uuid = service_id.service_uuid.uuid
+            context_service_uuids.add((context_uuid, service_uuid))
+        else:
+            str_service = grpc_message_to_json_string(service)
+            raise Exception('Unexpected ServiceType: {:s}'.format(str_service))
+
+    # Identify service to delete
+    assert len(context_service_uuids) == 1
+    context_uuid, service_uuid = set(context_service_uuids).pop()
+
+    # Delete Service
+    service_client.DeleteService(ServiceId(**json_service_id(service_uuid, json_context_id(context_uuid))))
+
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.service_ids) == 0
+    assert len(response.slice_ids) == 0
diff --git a/src/tests/tools/mock_flexscale_opt_ctrl/MockFlexscaleOptCtrl.py b/src/tests/tools/mock_tfs_optical_sdn_ctrl/MockTfsOpticalSdnCtrl.py
similarity index 100%
rename from src/tests/tools/mock_flexscale_opt_ctrl/MockFlexscaleOptCtrl.py
rename to src/tests/tools/mock_tfs_optical_sdn_ctrl/MockTfsOpticalSdnCtrl.py
diff --git a/src/tests/tools/mock_flexscale_opt_ctrl/data.py b/src/tests/tools/mock_tfs_optical_sdn_ctrl/data.py
similarity index 100%
rename from src/tests/tools/mock_flexscale_opt_ctrl/data.py
rename to src/tests/tools/mock_tfs_optical_sdn_ctrl/data.py
diff --git a/src/tests/tools/mock_flexscale_opt_ctrl/run.sh b/src/tests/tools/mock_tfs_optical_sdn_ctrl/run.sh
similarity index 95%
rename from src/tests/tools/mock_flexscale_opt_ctrl/run.sh
rename to src/tests/tools/mock_tfs_optical_sdn_ctrl/run.sh
index 183df7a030dca352ee2bb5fdfd0ac081cdcec960..4dc59b04646d80a0a5afbb34a77256a0c4ac6dca 100755
--- a/src/tests/tools/mock_flexscale_opt_ctrl/run.sh
+++ b/src/tests/tools/mock_tfs_optical_sdn_ctrl/run.sh
@@ -13,4 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-python MockFlexscaleOptCtrl.py
+python MockTfsOpticalSdnCtrl.py
diff --git a/src/webui/service/device/forms.py b/src/webui/service/device/forms.py
index 4c04bbfe12d8d39e51bd8275021064a5a7ad4fc3..45cece44f770f156d6a588a1d66538a86124e9ba 100644
--- a/src/webui/service/device/forms.py
+++ b/src/webui/service/device/forms.py
@@ -31,7 +31,7 @@ class AddDeviceForm(FlaskForm):
     device_drivers_xr = BooleanField('XR')
     device_drivers_ietf_l2vpn = BooleanField('IETF L2VPN')
     device_drivers_gnmi_openconfig = BooleanField('GNMI OPENCONFIG')
-    device_drivers_flexscale = BooleanField('FLEXSCALE')
+    device_drivers_optical_tfs = BooleanField('OPTICAL TFS')
     device_drivers_ietf_actn = BooleanField('IETF ACTN')
 
     device_config_address = StringField('connect/address',default='127.0.0.1',validators=[DataRequired(), Length(min=5)])
diff --git a/src/webui/service/device/routes.py b/src/webui/service/device/routes.py
index 8b8bc236af019c4f9d1209013d1f3f2cc8a8eeb0..e6f3cd7b8dd50507d2640afabb346129f8bce9cc 100644
--- a/src/webui/service/device/routes.py
+++ b/src/webui/service/device/routes.py
@@ -125,8 +125,8 @@ def add():
             device_drivers.append(DeviceDriverEnum.DEVICEDRIVER_IETF_L2VPN)
         if form.device_drivers_gnmi_openconfig.data:
             device_drivers.append(DeviceDriverEnum.DEVICEDRIVER_GNMI_OPENCONFIG)
-        if form.device_drivers_flexscale.data:
-            device_drivers.append(DeviceDriverEnum.DEVICEDRIVER_FLEXSCALE)
+        if form.device_drivers_optical_tfs.data:
+            device_drivers.append(DeviceDriverEnum.DEVICEDRIVER_OPTICAL_TFS)
         if form.device_drivers_ietf_actn.data:
             device_drivers.append(DeviceDriverEnum.DEVICEDRIVER_IETF_ACTN)
         device_obj.device_drivers.extend(device_drivers) # pylint: disable=no-member
diff --git a/src/webui/service/templates/device/add.html b/src/webui/service/templates/device/add.html
index c4d7f16858b7c63bd87e730cff6d586dc702e0c9..3785b3e30f54f14c9f6680841163353a433c5091 100644
--- a/src/webui/service/templates/device/add.html
+++ b/src/webui/service/templates/device/add.html
@@ -93,7 +93,7 @@
                 {{ form.device_drivers_ietf_l2vpn }} {{ form.device_drivers_ietf_l2vpn.label(class="col-sm-3 col-form-label") }}
                 {{ form.device_drivers_gnmi_openconfig }} {{ form.device_drivers_gnmi_openconfig.label(class="col-sm-3 col-form-label") }}
                 <br />
-                {{ form.device_drivers_flexscale }} {{ form.device_drivers_flexscale.label(class="col-sm-3 col-form-label") }}
+                {{ form.device_drivers_optical_tfs }} {{ form.device_drivers_optical_tfs.label(class="col-sm-3 col-form-label") }}
                 {{ form.device_drivers_ietf_actn }} {{ form.device_drivers_ietf_actn.label(class="col-sm-3 col-form-label") }}
                 {% endif %}
             </div>
diff --git a/src/webui/service/templates/main/debug.html b/src/webui/service/templates/main/debug.html
index a6964d588ac463673c735805fa3e810a0b16fd9c..f6ec5a50183e09b44fba594eeca67f931f49dcfc 100644
--- a/src/webui/service/templates/main/debug.html
+++ b/src/webui/service/templates/main/debug.html
@@ -20,10 +20,10 @@
     <h1>Debug API</h1>
 
     <ul>
-        <li><a class="nav-link" href="/debug-api/contexts" id="contexts_link" target="contexts">Contexts</a></li>
-        <li><a class="nav-link" href="/debug-api/dummy_contexts" id="dummy_contexts_link" target="dummy_contexts">Dummy Contexts</a></li>
-        <li><a class="nav-link" href="/debug-api/devices" id="devices_link" target="devices">Devices</a></li>
-        <li><a class="nav-link" href="/debug-api/links" id="links_link" target="links">Links</a></li>
+        <li><a class="nav-link" href="/tfs-api/contexts" id="contexts_link" target="contexts">Contexts</a></li>
+        <li><a class="nav-link" href="/tfs-api/dummy_contexts" id="dummy_contexts_link" target="dummy_contexts">Dummy Contexts</a></li>
+        <li><a class="nav-link" href="/tfs-api/devices" id="devices_link" target="devices">Devices</a></li>
+        <li><a class="nav-link" href="/tfs-api/links" id="links_link" target="links">Links</a></li>
     </ul>
 
 {% endblock %}
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/Serializer.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/Serializer.java
index 6106c95ffd0d5dfbddc0d809520a320251cbead9..725a8f12f0bb3f93fe3541a1cb7bb362988b6461 100644
--- a/src/ztp/src/main/java/org/etsi/tfs/ztp/Serializer.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/Serializer.java
@@ -865,8 +865,8 @@ public class Serializer {
                 return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_IETF_L2VPN;
             case GNMI_OPENCONFIG:
                 return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_GNMI_OPENCONFIG;
-            case FLEXSCALE:
-                return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_FLEXSCALE;
+            case OPTICAL_TFS:
+                return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_OPTICAL_TFS;
             case IETF_ACTN:
                 return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_IETF_ACTN;
             case UNDEFINED:
@@ -894,8 +894,8 @@ public class Serializer {
                 return DeviceDriverEnum.IETF_L2VPN;
             case DEVICEDRIVER_GNMI_OPENCONFIG:
                 return DeviceDriverEnum.GNMI_OPENCONFIG;
-            case DEVICEDRIVER_FLEXSCALE:
-                return DeviceDriverEnum.FLEXSCALE;
+            case DEVICEDRIVER_OPTICAL_TFS:
+                return DeviceDriverEnum.OPTICAL_TFS;
             case DEVICEDRIVER_IETF_ACTN:
                 return DeviceDriverEnum.IETF_ACTN;
             case DEVICEDRIVER_UNDEFINED:
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpServiceImpl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpServiceImpl.java
index 0f0f502d5a8c8baa1de9f12020f570c0b01d2f11..953d84aa3f556b2f48557351ba7d2cc3286a09e1 100644
--- a/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpServiceImpl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpServiceImpl.java
@@ -23,12 +23,12 @@ import org.etsi.tfs.ztp.context.ContextService;
 import org.etsi.tfs.ztp.context.model.Device;
 import org.etsi.tfs.ztp.context.model.DeviceConfig;
 import org.etsi.tfs.ztp.device.DeviceService;
+import org.etsi.tfs.ztp.exception.ExternalServiceFailureException;
 import org.jboss.logging.Logger;
 
 @ApplicationScoped
 public class ZtpServiceImpl implements ZtpService {
     private static final Logger LOGGER = Logger.getLogger(ZtpServiceImpl.class);
-    // private static final String MESSAGE = "Retrieved %s";
 
     private final DeviceService deviceService;
     private final ContextService contextService;
@@ -41,128 +41,104 @@ public class ZtpServiceImpl implements ZtpService {
 
     @Override
     public Uni<Device> addDevice(String deviceId) {
-        final var deserializedDeviceUni = contextService.getDevice(deviceId);
-
-        deserializedDeviceUni
+        return contextService
+                .getDevice(deviceId)
                 .onFailure()
-                .recoverWithNull()
-                .subscribe()
-                .with(
+                .transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
+                .onItem()
+                .transformToUni(
                         device -> {
-                            final var id = deviceId;
-
-                            if (device == null) {
-                                LOGGER.warnf("%s is null. Ignoring...", device);
-                                return;
-                            }
-
                             if (device.isEnabled()) {
                                 LOGGER.warnf("%s has already been enabled. Ignoring...", device);
-                                return;
+                                return Uni.createFrom().failure(new Exception("Device is already enabled"));
+                            } else {
+                                return addDeviceTo(device, deviceId);
                             }
+                        });
+    }
 
-                            // LOGGER.infof(MESSAGE, device);
-
-                            final var initialConfiguration =
-                                    deviceService.getInitialConfiguration(device.getDeviceId());
-
-                            device.enableDevice();
-                            LOGGER.infof("Enabled device [%s]", id);
+    public Uni<Device> addDeviceTo(Device device, String deviceId) {
+        LOGGER.infof("Enabling device with ID [%s]", deviceId);
+        device.enableDevice();
 
-                            initialConfiguration
-                                    .subscribe()
-                                    .with(
-                                            deviceConfig -> {
-                                                device.setDeviceConfiguration(deviceConfig);
-                                                final var configuredDeviceIdUni = deviceService.configureDevice(device);
+        final Uni<DeviceConfig> initialConfiguration = deviceService.getInitialConfiguration(deviceId);
 
-                                                configuredDeviceIdUni
-                                                        .subscribe()
-                                                        .with(
-                                                                configuredDeviceId ->
-                                                                        LOGGER.infof(
-                                                                                "Device [%s] has been successfully enabled and configured with %s.\n",
-                                                                                id, deviceConfig));
+        return initialConfiguration
+                .onItem()
+                .transformToUni(
+                        deviceConfig -> {
+                            device.setDeviceConfiguration(deviceConfig);
+                            LOGGER.infof(
+                                    "Configuring device with ID [%s] with initial configuration %s",
+                                    deviceId, deviceConfig);
+                            return deviceService
+                                    .configureDevice(device)
+                                    .map(
+                                            configuredDeviceId -> {
+                                                LOGGER.infof(
+                                                        "Device with ID [%s] has been successfully enabled and configured.",
+                                                        deviceId);
+                                                return device;
                                             });
                         });
-
-        return deserializedDeviceUni;
     }
 
     @Override
     public Uni<Device> deleteDevice(String deviceId) {
-        final var deserializedDeviceUni = contextService.getDevice(deviceId);
-
-        deserializedDeviceUni
+        return contextService
+                .getDevice(deviceId)
                 .onFailure()
-                .recoverWithNull()
-                .subscribe()
-                .with(
+                .transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
+                .onItem()
+                .transformToUni(
                         device -> {
-                            final var id = deviceId;
-
-                            if (device == null) {
-                                LOGGER.warnf("%s is null. Ignoring...", device);
-                                return;
-                            }
-
                             if (device.isDisabled()) {
-                                LOGGER.warnf("%s has already been disabled. Ignoring...", device);
-                                return;
+                                LOGGER.warnf("Device with ID %s has already been disabled. Ignoring...", deviceId);
+                                return Uni.createFrom().nullItem();
+                            } else {
+                                LOGGER.infof("Disabling device with ID [%s]", deviceId);
+                                device.disableDevice();
+
+                                return deviceService
+                                        .deleteDevice(deviceId)
+                                        .onItem()
+                                        .transform(
+                                                emptyMessage -> {
+                                                    LOGGER.infof(
+                                                            "Device with ID [%s] has been successfully deleted.", deviceId);
+                                                    return device;
+                                                });
                             }
-
-                            device.disableDevice();
-                            LOGGER.infof("Disabled device [%s]", id);
-
-                            // LOGGER.infof(MESSAGE, device);
-
-                            final var empty = deviceService.deleteDevice(device.getDeviceId());
-
-                            empty
-                                    .subscribe()
-                                    .with(
-                                            emptyMessage ->
-                                                    LOGGER.infof("Device [%s] has been successfully deleted.\n", id));
                         });
-
-        return deserializedDeviceUni;
     }
 
     @Override
     public Uni<Device> updateDevice(String deviceId, DeviceConfig deviceConfig) {
-        final var deserializedDeviceUni = contextService.getDevice(deviceId);
-
-        deserializedDeviceUni
+        return contextService
+                .getDevice(deviceId)
                 .onFailure()
-                .recoverWithNull()
-                .subscribe()
-                .with(
+                .transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
+                .onItem()
+                .transformToUni(
                         device -> {
-                            final var id = deviceId;
-
-                            if (device == null) {
-                                LOGGER.warnf("%s is null. Ignoring...", device);
-                                return;
-                            }
-
                             if (!device.isEnabled()) {
-                                LOGGER.warnf("Cannot update disabled device %s. Ignoring...", device);
-                                return;
-                            }
-
-                            // LOGGER.infof(MESSAGE, device);
-                            device.setDeviceConfiguration(deviceConfig);
-                            final var updatedDeviceIdUni = deviceService.configureDevice(device);
-
-                            updatedDeviceIdUni
-                                    .subscribe()
-                                    .with(
-                                            configuredDeviceId ->
+                                LOGGER.warnf("Cannot update disabled device %s. Ignoring...", deviceId);
+                                return Uni.createFrom().nullItem();
+                            } else {
+                                LOGGER.infof("Updating configuration of device with ID [%s]", deviceId);
+                                device.setDeviceConfiguration(deviceConfig);
+
+                                return deviceService
+                                        .configureDevice(device)
+                                        .onItem()
+                                        .transform(
+                                                configuredDeviceId -> {
                                                     LOGGER.infof(
-                                                            "Device [%s] has been successfully updated with %s.\n",
-                                                            id, deviceConfig));
+                                                            "Device with ID [%s] has been successfully updated with %s.",
+                                                            deviceId, deviceConfig);
+                                                    return device;
+                                                });
+                            }
                         });
-
-        return deserializedDeviceUni;
     }
 }
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceDriverEnum.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceDriverEnum.java
index 8e89be8a6ddc993e7d90794c756f406fa72104f2..ec41193032ecdd0718a92cfff147590ba8db50f5 100644
--- a/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceDriverEnum.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceDriverEnum.java
@@ -26,6 +26,6 @@ public enum DeviceDriverEnum {
     XR,
     IETF_L2VPN,
     GNMI_OPENCONFIG,
-    FLEXSCALE,
+    OPTICAL_TFS,
     IETF_ACTN
 }
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/exception/ExternalServiceFailureException.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/exception/ExternalServiceFailureException.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe25f18c371b8d8176eecadda101058e0df6e284
--- /dev/null
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/exception/ExternalServiceFailureException.java
@@ -0,0 +1,28 @@
+/*
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.etsi.tfs.ztp.exception;
+
+public class ExternalServiceFailureException extends RuntimeException {
+
+    public ExternalServiceFailureException(String message, Exception e) {
+        super(message, e);
+    }
+
+    public ExternalServiceFailureException(String message) {
+        super(message);
+    }
+}
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/exception/GeneralExceptionHandler.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/exception/GeneralExceptionHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..45886e97531f2b8c89c4b32ee8f950a11d1a16ea
--- /dev/null
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/exception/GeneralExceptionHandler.java
@@ -0,0 +1,57 @@
+/*
+* Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.etsi.tfs.ztp.exception;
+
+import io.grpc.Metadata;
+import io.grpc.ServerCall;
+import io.grpc.Status;
+import io.grpc.StatusRuntimeException;
+import io.quarkus.grpc.ExceptionHandlerProvider;
+import jakarta.enterprise.context.ApplicationScoped;
+
+@ApplicationScoped
+public class GeneralExceptionHandler implements ExceptionHandlerProvider {
+    @Override
+    public <ReqT, RespT> io.quarkus.grpc.ExceptionHandler<ReqT, RespT> createHandler(
+            ServerCall.Listener<ReqT> listener, ServerCall<ReqT, RespT> serverCall, Metadata metadata) {
+        return new HelloExceptionHandler<>(listener, serverCall, metadata);
+    }
+
+    @Override
+    public Throwable transform(Throwable t) {
+        if (t instanceof ExternalServiceFailureException) {
+            return new StatusRuntimeException(Status.INTERNAL.withDescription(t.getMessage()));
+        } else {
+            return ExceptionHandlerProvider.toStatusException(t, true);
+        }
+    }
+
+    private static class HelloExceptionHandler<A, B> extends io.quarkus.grpc.ExceptionHandler<A, B> {
+        public HelloExceptionHandler(
+                ServerCall.Listener<A> listener, ServerCall<A, B> call, Metadata metadata) {
+            super(listener, call, metadata);
+        }
+
+        @Override
+        protected void handleException(Throwable t, ServerCall<A, B> call, Metadata metadata) {
+            StatusRuntimeException sre =
+                    (StatusRuntimeException) ExceptionHandlerProvider.toStatusException(t, true);
+            Metadata trailers = sre.getTrailers() != null ? sre.getTrailers() : metadata;
+            call.close(sre.getStatus(), trailers);
+        }
+    }
+}
diff --git a/src/ztp/src/main/resources/application.yml b/src/ztp/src/main/resources/application.yml
index c551759efb3645f9c307c20a8988fc8ee9a89e0a..91f40d0c281861ada31631099dad0d02f6e98a93 100644
--- a/src/ztp/src/main/resources/application.yml
+++ b/src/ztp/src/main/resources/application.yml
@@ -15,6 +15,11 @@
 ztp:
   should-subscribe-to-context-component: true
 quarkus:
+  package:
+    type: mutable-jar
+  live-reload:
+    password: 1234
+    url: http://0.0.0.0:8080
   banner:
     path: teraflow-ztp-banner.txt
   grpc: 
diff --git a/src/ztp/src/test/java/org/etsi/tfs/ztp/SerializerTest.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/SerializerTest.java
index f1cb798b284c80e27011127f50180aa1f3886b7e..346ff589131496222055ac679f319a8da4bf10a0 100644
--- a/src/ztp/src/test/java/org/etsi/tfs/ztp/SerializerTest.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/SerializerTest.java
@@ -1227,7 +1227,8 @@ class SerializerTest {
                         DeviceDriverEnum.GNMI_OPENCONFIG,
                         ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_GNMI_OPENCONFIG),
                 Arguments.of(
-                        DeviceDriverEnum.FLEXSCALE, ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_FLEXSCALE),
+                        DeviceDriverEnum.OPTICAL_TFS,
+                        ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_OPTICAL_TFS),
                 Arguments.of(
                         DeviceDriverEnum.IETF_ACTN, ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_IETF_ACTN),
                 Arguments.of(
diff --git a/src/ztp/target/generated-sources/grpc/acl/Acl.java b/src/ztp/target/generated-sources/grpc/acl/Acl.java
index cba5f55d7620c589307ed15fd548ce386cbc6ff0..f1895fa7206642f8f8d6b63f5d2635fb68816f89 100644
--- a/src/ztp/target/generated-sources/grpc/acl/Acl.java
+++ b/src/ztp/target/generated-sources/grpc/acl/Acl.java
@@ -485,6 +485,86 @@ public final class Acl {
             return new AclMatch();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AclMatch(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                dscp_ = input.readUInt32();
+                                break;
+                            }
+                        case 16:
+                            {
+                                protocol_ = input.readUInt32();
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                srcAddress_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                dstAddress_ = s;
+                                break;
+                            }
+                        case 40:
+                            {
+                                srcPort_ = input.readUInt32();
+                                break;
+                            }
+                        case 48:
+                            {
+                                dstPort_ = input.readUInt32();
+                                break;
+                            }
+                        case 56:
+                            {
+                                startMplsLabel_ = input.readUInt32();
+                                break;
+                            }
+                        case 64:
+                            {
+                                endMplsLabel_ = input.readUInt32();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return acl.Acl.internal_static_acl_AclMatch_descriptor;
         }
@@ -496,7 +576,7 @@ public final class Acl {
 
         public static final int DSCP_FIELD_NUMBER = 1;
 
-        private int dscp_ = 0;
+        private int dscp_;
 
         /**
          * <code>uint32 dscp = 1;</code>
@@ -509,7 +589,7 @@ public final class Acl {
 
         public static final int PROTOCOL_FIELD_NUMBER = 2;
 
-        private int protocol_ = 0;
+        private int protocol_;
 
         /**
          * <code>uint32 protocol = 2;</code>
@@ -522,8 +602,7 @@ public final class Acl {
 
         public static final int SRC_ADDRESS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object srcAddress_ = "";
+        private volatile java.lang.Object srcAddress_;
 
         /**
          * <code>string src_address = 3;</code>
@@ -560,8 +639,7 @@ public final class Acl {
 
         public static final int DST_ADDRESS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object dstAddress_ = "";
+        private volatile java.lang.Object dstAddress_;
 
         /**
          * <code>string dst_address = 4;</code>
@@ -598,7 +676,7 @@ public final class Acl {
 
         public static final int SRC_PORT_FIELD_NUMBER = 5;
 
-        private int srcPort_ = 0;
+        private int srcPort_;
 
         /**
          * <code>uint32 src_port = 5;</code>
@@ -611,7 +689,7 @@ public final class Acl {
 
         public static final int DST_PORT_FIELD_NUMBER = 6;
 
-        private int dstPort_ = 0;
+        private int dstPort_;
 
         /**
          * <code>uint32 dst_port = 6;</code>
@@ -624,7 +702,7 @@ public final class Acl {
 
         public static final int START_MPLS_LABEL_FIELD_NUMBER = 7;
 
-        private int startMplsLabel_ = 0;
+        private int startMplsLabel_;
 
         /**
          * <code>uint32 start_mpls_label = 7;</code>
@@ -637,7 +715,7 @@ public final class Acl {
 
         public static final int END_MPLS_LABEL_FIELD_NUMBER = 8;
 
-        private int endMplsLabel_ = 0;
+        private int endMplsLabel_;
 
         /**
          * <code>uint32 end_mpls_label = 8;</code>
@@ -669,10 +747,10 @@ public final class Acl {
             if (protocol_ != 0) {
                 output.writeUInt32(2, protocol_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcAddress_)) {
+            if (!getSrcAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, srcAddress_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstAddress_)) {
+            if (!getDstAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 4, dstAddress_);
             }
             if (srcPort_ != 0) {
@@ -687,7 +765,7 @@ public final class Acl {
             if (endMplsLabel_ != 0) {
                 output.writeUInt32(8, endMplsLabel_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -702,10 +780,10 @@ public final class Acl {
             if (protocol_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, protocol_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcAddress_)) {
+            if (!getSrcAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, srcAddress_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstAddress_)) {
+            if (!getDstAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, dstAddress_);
             }
             if (srcPort_ != 0) {
@@ -720,7 +798,7 @@ public final class Acl {
             if (endMplsLabel_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(8, endMplsLabel_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -750,7 +828,7 @@ public final class Acl {
                 return false;
             if (getEndMplsLabel() != other.getEndMplsLabel())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -778,7 +856,7 @@ public final class Acl {
             hash = (53 * hash) + getStartMplsLabel();
             hash = (37 * hash) + END_MPLS_LABEL_FIELD_NUMBER;
             hash = (53 * hash) + getEndMplsLabel();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -872,16 +950,22 @@ public final class Acl {
 
             // Construct using acl.Acl.AclMatch.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 dscp_ = 0;
                 protocol_ = 0;
                 srcAddress_ = "";
@@ -915,39 +999,46 @@ public final class Acl {
             @java.lang.Override
             public acl.Acl.AclMatch buildPartial() {
                 acl.Acl.AclMatch result = new acl.Acl.AclMatch(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.dscp_ = dscp_;
+                result.protocol_ = protocol_;
+                result.srcAddress_ = srcAddress_;
+                result.dstAddress_ = dstAddress_;
+                result.srcPort_ = srcPort_;
+                result.dstPort_ = dstPort_;
+                result.startMplsLabel_ = startMplsLabel_;
+                result.endMplsLabel_ = endMplsLabel_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(acl.Acl.AclMatch result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.dscp_ = dscp_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.protocol_ = protocol_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.srcAddress_ = srcAddress_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.dstAddress_ = dstAddress_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.srcPort_ = srcPort_;
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.dstPort_ = dstPort_;
-                }
-                if (((from_bitField0_ & 0x00000040) != 0)) {
-                    result.startMplsLabel_ = startMplsLabel_;
-                }
-                if (((from_bitField0_ & 0x00000080) != 0)) {
-                    result.endMplsLabel_ = endMplsLabel_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -971,12 +1062,10 @@ public final class Acl {
                 }
                 if (!other.getSrcAddress().isEmpty()) {
                     srcAddress_ = other.srcAddress_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (!other.getDstAddress().isEmpty()) {
                     dstAddress_ = other.dstAddress_;
-                    bitField0_ |= 0x00000008;
                     onChanged();
                 }
                 if (other.getSrcPort() != 0) {
@@ -991,7 +1080,7 @@ public final class Acl {
                 if (other.getEndMplsLabel() != 0) {
                     setEndMplsLabel(other.getEndMplsLabel());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -1003,96 +1092,20 @@ public final class Acl {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                acl.Acl.AclMatch parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    dscp_ = input.readUInt32();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 16:
-                                {
-                                    protocol_ = input.readUInt32();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 26:
-                                {
-                                    srcAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    dstAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            case 40:
-                                {
-                                    srcPort_ = input.readUInt32();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 40
-                            case 48:
-                                {
-                                    dstPort_ = input.readUInt32();
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 48
-                            case 56:
-                                {
-                                    startMplsLabel_ = input.readUInt32();
-                                    bitField0_ |= 0x00000040;
-                                    break;
-                                }
-                            // case 56
-                            case 64:
-                                {
-                                    endMplsLabel_ = input.readUInt32();
-                                    bitField0_ |= 0x00000080;
-                                    break;
-                                }
-                            // case 64
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (acl.Acl.AclMatch) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int dscp_;
 
             /**
@@ -1111,7 +1124,6 @@ public final class Acl {
              */
             public Builder setDscp(int value) {
                 dscp_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -1121,7 +1133,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearDscp() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 dscp_ = 0;
                 onChanged();
                 return this;
@@ -1145,7 +1156,6 @@ public final class Acl {
              */
             public Builder setProtocol(int value) {
                 protocol_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1155,7 +1165,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearProtocol() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 protocol_ = 0;
                 onChanged();
                 return this;
@@ -1204,7 +1213,6 @@ public final class Acl {
                     throw new NullPointerException();
                 }
                 srcAddress_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -1215,7 +1223,6 @@ public final class Acl {
              */
             public Builder clearSrcAddress() {
                 srcAddress_ = getDefaultInstance().getSrcAddress();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -1231,7 +1238,6 @@ public final class Acl {
                 }
                 checkByteStringIsUtf8(value);
                 srcAddress_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -1279,7 +1285,6 @@ public final class Acl {
                     throw new NullPointerException();
                 }
                 dstAddress_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -1290,7 +1295,6 @@ public final class Acl {
              */
             public Builder clearDstAddress() {
                 dstAddress_ = getDefaultInstance().getDstAddress();
-                bitField0_ = (bitField0_ & ~0x00000008);
                 onChanged();
                 return this;
             }
@@ -1306,7 +1310,6 @@ public final class Acl {
                 }
                 checkByteStringIsUtf8(value);
                 dstAddress_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -1329,7 +1332,6 @@ public final class Acl {
              */
             public Builder setSrcPort(int value) {
                 srcPort_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -1339,7 +1341,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearSrcPort() {
-                bitField0_ = (bitField0_ & ~0x00000010);
                 srcPort_ = 0;
                 onChanged();
                 return this;
@@ -1363,7 +1364,6 @@ public final class Acl {
              */
             public Builder setDstPort(int value) {
                 dstPort_ = value;
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return this;
             }
@@ -1373,7 +1373,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearDstPort() {
-                bitField0_ = (bitField0_ & ~0x00000020);
                 dstPort_ = 0;
                 onChanged();
                 return this;
@@ -1397,7 +1396,6 @@ public final class Acl {
              */
             public Builder setStartMplsLabel(int value) {
                 startMplsLabel_ = value;
-                bitField0_ |= 0x00000040;
                 onChanged();
                 return this;
             }
@@ -1407,7 +1405,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearStartMplsLabel() {
-                bitField0_ = (bitField0_ & ~0x00000040);
                 startMplsLabel_ = 0;
                 onChanged();
                 return this;
@@ -1431,7 +1428,6 @@ public final class Acl {
              */
             public Builder setEndMplsLabel(int value) {
                 endMplsLabel_ = value;
-                bitField0_ |= 0x00000080;
                 onChanged();
                 return this;
             }
@@ -1441,7 +1437,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearEndMplsLabel() {
-                bitField0_ = (bitField0_ & ~0x00000080);
                 endMplsLabel_ = 0;
                 onChanged();
                 return this;
@@ -1474,17 +1469,7 @@ public final class Acl {
 
             @java.lang.Override
             public AclMatch parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AclMatch(input, extensionRegistry);
             }
         };
 
@@ -1555,6 +1540,56 @@ public final class Acl {
             return new AclAction();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AclAction(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                forwardAction_ = rawValue;
+                                break;
+                            }
+                        case 16:
+                            {
+                                int rawValue = input.readEnum();
+                                logAction_ = rawValue;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return acl.Acl.internal_static_acl_AclAction_descriptor;
         }
@@ -1566,7 +1601,7 @@ public final class Acl {
 
         public static final int FORWARD_ACTION_FIELD_NUMBER = 1;
 
-        private int forwardAction_ = 0;
+        private int forwardAction_;
 
         /**
          * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
@@ -1583,13 +1618,14 @@ public final class Acl {
          */
         @java.lang.Override
         public acl.Acl.AclForwardActionEnum getForwardAction() {
-            acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.forNumber(forwardAction_);
+            @SuppressWarnings("deprecation")
+            acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.valueOf(forwardAction_);
             return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result;
         }
 
         public static final int LOG_ACTION_FIELD_NUMBER = 2;
 
-        private int logAction_ = 0;
+        private int logAction_;
 
         /**
          * <code>.acl.AclLogActionEnum log_action = 2;</code>
@@ -1606,7 +1642,8 @@ public final class Acl {
          */
         @java.lang.Override
         public acl.Acl.AclLogActionEnum getLogAction() {
-            acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.forNumber(logAction_);
+            @SuppressWarnings("deprecation")
+            acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.valueOf(logAction_);
             return result == null ? acl.Acl.AclLogActionEnum.UNRECOGNIZED : result;
         }
 
@@ -1631,7 +1668,7 @@ public final class Acl {
             if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) {
                 output.writeEnum(2, logAction_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -1646,7 +1683,7 @@ public final class Acl {
             if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, logAction_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1664,7 +1701,7 @@ public final class Acl {
                 return false;
             if (logAction_ != other.logAction_)
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -1680,7 +1717,7 @@ public final class Acl {
             hash = (53 * hash) + forwardAction_;
             hash = (37 * hash) + LOG_ACTION_FIELD_NUMBER;
             hash = (53 * hash) + logAction_;
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -1774,16 +1811,22 @@ public final class Acl {
 
             // Construct using acl.Acl.AclAction.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 forwardAction_ = 0;
                 logAction_ = 0;
                 return this;
@@ -1811,21 +1854,40 @@ public final class Acl {
             @java.lang.Override
             public acl.Acl.AclAction buildPartial() {
                 acl.Acl.AclAction result = new acl.Acl.AclAction(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.forwardAction_ = forwardAction_;
+                result.logAction_ = logAction_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(acl.Acl.AclAction result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.forwardAction_ = forwardAction_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.logAction_ = logAction_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -1847,7 +1909,7 @@ public final class Acl {
                 if (other.logAction_ != 0) {
                     setLogActionValue(other.getLogActionValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -1859,54 +1921,20 @@ public final class Acl {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                acl.Acl.AclAction parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    forwardAction_ = input.readEnum();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 16:
-                                {
-                                    logAction_ = input.readEnum();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (acl.Acl.AclAction) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int forwardAction_ = 0;
 
             /**
@@ -1925,7 +1953,6 @@ public final class Acl {
              */
             public Builder setForwardActionValue(int value) {
                 forwardAction_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -1936,7 +1963,8 @@ public final class Acl {
              */
             @java.lang.Override
             public acl.Acl.AclForwardActionEnum getForwardAction() {
-                acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.forNumber(forwardAction_);
+                @SuppressWarnings("deprecation")
+                acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.valueOf(forwardAction_);
                 return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result;
             }
 
@@ -1949,7 +1977,6 @@ public final class Acl {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000001;
                 forwardAction_ = value.getNumber();
                 onChanged();
                 return this;
@@ -1960,7 +1987,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearForwardAction() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 forwardAction_ = 0;
                 onChanged();
                 return this;
@@ -1984,7 +2010,6 @@ public final class Acl {
              */
             public Builder setLogActionValue(int value) {
                 logAction_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1995,7 +2020,8 @@ public final class Acl {
              */
             @java.lang.Override
             public acl.Acl.AclLogActionEnum getLogAction() {
-                acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.forNumber(logAction_);
+                @SuppressWarnings("deprecation")
+                acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.valueOf(logAction_);
                 return result == null ? acl.Acl.AclLogActionEnum.UNRECOGNIZED : result;
             }
 
@@ -2008,7 +2034,6 @@ public final class Acl {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000002;
                 logAction_ = value.getNumber();
                 onChanged();
                 return this;
@@ -2019,7 +2044,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearLogAction() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 logAction_ = 0;
                 onChanged();
                 return this;
@@ -2052,17 +2076,7 @@ public final class Acl {
 
             @java.lang.Override
             public AclAction parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AclAction(input, extensionRegistry);
             }
         };
 
@@ -2160,6 +2174,81 @@ public final class Acl {
             return new AclEntry();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AclEntry(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                sequenceId_ = input.readUInt32();
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                description_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                acl.Acl.AclMatch.Builder subBuilder = null;
+                                if (match_ != null) {
+                                    subBuilder = match_.toBuilder();
+                                }
+                                match_ = input.readMessage(acl.Acl.AclMatch.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(match_);
+                                    match_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 34:
+                            {
+                                acl.Acl.AclAction.Builder subBuilder = null;
+                                if (action_ != null) {
+                                    subBuilder = action_.toBuilder();
+                                }
+                                action_ = input.readMessage(acl.Acl.AclAction.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(action_);
+                                    action_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return acl.Acl.internal_static_acl_AclEntry_descriptor;
         }
@@ -2171,7 +2260,7 @@ public final class Acl {
 
         public static final int SEQUENCE_ID_FIELD_NUMBER = 1;
 
-        private int sequenceId_ = 0;
+        private int sequenceId_;
 
         /**
          * <code>uint32 sequence_id = 1;</code>
@@ -2184,8 +2273,7 @@ public final class Acl {
 
         public static final int DESCRIPTION_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object description_ = "";
+        private volatile java.lang.Object description_;
 
         /**
          * <code>string description = 2;</code>
@@ -2247,7 +2335,7 @@ public final class Acl {
          */
         @java.lang.Override
         public acl.Acl.AclMatchOrBuilder getMatchOrBuilder() {
-            return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_;
+            return getMatch();
         }
 
         public static final int ACTION_FIELD_NUMBER = 4;
@@ -2277,7 +2365,7 @@ public final class Acl {
          */
         @java.lang.Override
         public acl.Acl.AclActionOrBuilder getActionOrBuilder() {
-            return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_;
+            return getAction();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -2298,7 +2386,7 @@ public final class Acl {
             if (sequenceId_ != 0) {
                 output.writeUInt32(1, sequenceId_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
+            if (!getDescriptionBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_);
             }
             if (match_ != null) {
@@ -2307,7 +2395,7 @@ public final class Acl {
             if (action_ != null) {
                 output.writeMessage(4, getAction());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -2319,7 +2407,7 @@ public final class Acl {
             if (sequenceId_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(1, sequenceId_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
+            if (!getDescriptionBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_);
             }
             if (match_ != null) {
@@ -2328,7 +2416,7 @@ public final class Acl {
             if (action_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getAction());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -2358,7 +2446,7 @@ public final class Acl {
                 if (!getAction().equals(other.getAction()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -2382,7 +2470,7 @@ public final class Acl {
                 hash = (37 * hash) + ACTION_FIELD_NUMBER;
                 hash = (53 * hash) + getAction().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2476,26 +2564,34 @@ public final class Acl {
 
             // Construct using acl.Acl.AclEntry.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 sequenceId_ = 0;
                 description_ = "";
-                match_ = null;
-                if (matchBuilder_ != null) {
-                    matchBuilder_.dispose();
+                if (matchBuilder_ == null) {
+                    match_ = null;
+                } else {
+                    match_ = null;
                     matchBuilder_ = null;
                 }
-                action_ = null;
-                if (actionBuilder_ != null) {
-                    actionBuilder_.dispose();
+                if (actionBuilder_ == null) {
+                    action_ = null;
+                } else {
+                    action_ = null;
                     actionBuilder_ = null;
                 }
                 return this;
@@ -2523,27 +2619,50 @@ public final class Acl {
             @java.lang.Override
             public acl.Acl.AclEntry buildPartial() {
                 acl.Acl.AclEntry result = new acl.Acl.AclEntry(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                result.sequenceId_ = sequenceId_;
+                result.description_ = description_;
+                if (matchBuilder_ == null) {
+                    result.match_ = match_;
+                } else {
+                    result.match_ = matchBuilder_.build();
+                }
+                if (actionBuilder_ == null) {
+                    result.action_ = action_;
+                } else {
+                    result.action_ = actionBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(acl.Acl.AclEntry result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.sequenceId_ = sequenceId_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.description_ = description_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.match_ = matchBuilder_ == null ? match_ : matchBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.action_ = actionBuilder_ == null ? action_ : actionBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -2564,7 +2683,6 @@ public final class Acl {
                 }
                 if (!other.getDescription().isEmpty()) {
                     description_ = other.description_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.hasMatch()) {
@@ -2573,7 +2691,7 @@ public final class Acl {
                 if (other.hasAction()) {
                     mergeAction(other.getAction());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -2585,68 +2703,20 @@ public final class Acl {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                acl.Acl.AclEntry parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    sequenceId_ = input.readUInt32();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 18:
-                                {
-                                    description_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getMatchFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    input.readMessage(getActionFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (acl.Acl.AclEntry) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int sequenceId_;
 
             /**
@@ -2665,7 +2735,6 @@ public final class Acl {
              */
             public Builder setSequenceId(int value) {
                 sequenceId_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -2675,7 +2744,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearSequenceId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 sequenceId_ = 0;
                 onChanged();
                 return this;
@@ -2724,7 +2792,6 @@ public final class Acl {
                     throw new NullPointerException();
                 }
                 description_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -2735,7 +2802,6 @@ public final class Acl {
              */
             public Builder clearDescription() {
                 description_ = getDefaultInstance().getDescription();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -2751,7 +2817,6 @@ public final class Acl {
                 }
                 checkByteStringIsUtf8(value);
                 description_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -2765,7 +2830,7 @@ public final class Acl {
              * @return Whether the match field is set.
              */
             public boolean hasMatch() {
-                return ((bitField0_ & 0x00000004) != 0);
+                return matchBuilder_ != null || match_ != null;
             }
 
             /**
@@ -2789,11 +2854,10 @@ public final class Acl {
                         throw new NullPointerException();
                     }
                     match_ = value;
+                    onChanged();
                 } else {
                     matchBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -2803,11 +2867,10 @@ public final class Acl {
             public Builder setMatch(acl.Acl.AclMatch.Builder builderForValue) {
                 if (matchBuilder_ == null) {
                     match_ = builderForValue.build();
+                    onChanged();
                 } else {
                     matchBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -2816,16 +2879,15 @@ public final class Acl {
              */
             public Builder mergeMatch(acl.Acl.AclMatch value) {
                 if (matchBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0) && match_ != null && match_ != acl.Acl.AclMatch.getDefaultInstance()) {
-                        getMatchBuilder().mergeFrom(value);
+                    if (match_ != null) {
+                        match_ = acl.Acl.AclMatch.newBuilder(match_).mergeFrom(value).buildPartial();
                     } else {
                         match_ = value;
                     }
+                    onChanged();
                 } else {
                     matchBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -2833,13 +2895,13 @@ public final class Acl {
              * <code>.acl.AclMatch match = 3;</code>
              */
             public Builder clearMatch() {
-                bitField0_ = (bitField0_ & ~0x00000004);
-                match_ = null;
-                if (matchBuilder_ != null) {
-                    matchBuilder_.dispose();
+                if (matchBuilder_ == null) {
+                    match_ = null;
+                    onChanged();
+                } else {
+                    match_ = null;
                     matchBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2847,7 +2909,6 @@ public final class Acl {
              * <code>.acl.AclMatch match = 3;</code>
              */
             public acl.Acl.AclMatch.Builder getMatchBuilder() {
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return getMatchFieldBuilder().getBuilder();
             }
@@ -2883,7 +2944,7 @@ public final class Acl {
              * @return Whether the action field is set.
              */
             public boolean hasAction() {
-                return ((bitField0_ & 0x00000008) != 0);
+                return actionBuilder_ != null || action_ != null;
             }
 
             /**
@@ -2907,11 +2968,10 @@ public final class Acl {
                         throw new NullPointerException();
                     }
                     action_ = value;
+                    onChanged();
                 } else {
                     actionBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -2921,11 +2981,10 @@ public final class Acl {
             public Builder setAction(acl.Acl.AclAction.Builder builderForValue) {
                 if (actionBuilder_ == null) {
                     action_ = builderForValue.build();
+                    onChanged();
                 } else {
                     actionBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -2934,16 +2993,15 @@ public final class Acl {
              */
             public Builder mergeAction(acl.Acl.AclAction value) {
                 if (actionBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0) && action_ != null && action_ != acl.Acl.AclAction.getDefaultInstance()) {
-                        getActionBuilder().mergeFrom(value);
+                    if (action_ != null) {
+                        action_ = acl.Acl.AclAction.newBuilder(action_).mergeFrom(value).buildPartial();
                     } else {
                         action_ = value;
                     }
+                    onChanged();
                 } else {
                     actionBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -2951,13 +3009,13 @@ public final class Acl {
              * <code>.acl.AclAction action = 4;</code>
              */
             public Builder clearAction() {
-                bitField0_ = (bitField0_ & ~0x00000008);
-                action_ = null;
-                if (actionBuilder_ != null) {
-                    actionBuilder_.dispose();
+                if (actionBuilder_ == null) {
+                    action_ = null;
+                    onChanged();
+                } else {
+                    action_ = null;
                     actionBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2965,7 +3023,6 @@ public final class Acl {
              * <code>.acl.AclAction action = 4;</code>
              */
             public acl.Acl.AclAction.Builder getActionBuilder() {
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return getActionFieldBuilder().getBuilder();
             }
@@ -3019,17 +3076,7 @@ public final class Acl {
 
             @java.lang.Override
             public AclEntry parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AclEntry(input, extensionRegistry);
             }
         };
 
@@ -3152,6 +3199,81 @@ public final class Acl {
             return new AclRuleSet();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AclRuleSet(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 16:
+                            {
+                                int rawValue = input.readEnum();
+                                type_ = rawValue;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                description_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                userId_ = s;
+                                break;
+                            }
+                        case 42:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    entries_ = new java.util.ArrayList<acl.Acl.AclEntry>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                entries_.add(input.readMessage(acl.Acl.AclEntry.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    entries_ = java.util.Collections.unmodifiableList(entries_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return acl.Acl.internal_static_acl_AclRuleSet_descriptor;
         }
@@ -3163,8 +3285,7 @@ public final class Acl {
 
         public static final int NAME_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 1;</code>
@@ -3201,7 +3322,7 @@ public final class Acl {
 
         public static final int TYPE_FIELD_NUMBER = 2;
 
-        private int type_ = 0;
+        private int type_;
 
         /**
          * <code>.acl.AclRuleTypeEnum type = 2;</code>
@@ -3218,14 +3339,14 @@ public final class Acl {
          */
         @java.lang.Override
         public acl.Acl.AclRuleTypeEnum getType() {
-            acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.forNumber(type_);
+            @SuppressWarnings("deprecation")
+            acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.valueOf(type_);
             return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result;
         }
 
         public static final int DESCRIPTION_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object description_ = "";
+        private volatile java.lang.Object description_;
 
         /**
          * <code>string description = 3;</code>
@@ -3262,8 +3383,7 @@ public final class Acl {
 
         public static final int USER_ID_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object userId_ = "";
+        private volatile java.lang.Object userId_;
 
         /**
          * <code>string user_id = 4;</code>
@@ -3300,7 +3420,6 @@ public final class Acl {
 
         public static final int ENTRIES_FIELD_NUMBER = 5;
 
-        @SuppressWarnings("serial")
         private java.util.List<acl.Acl.AclEntry> entries_;
 
         /**
@@ -3358,22 +3477,22 @@ public final class Acl {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
             }
             if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) {
                 output.writeEnum(2, type_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
+            if (!getDescriptionBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, description_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) {
+            if (!getUserIdBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 4, userId_);
             }
             for (int i = 0; i < entries_.size(); i++) {
                 output.writeMessage(5, entries_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -3382,22 +3501,22 @@ public final class Acl {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
             }
             if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, type_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
+            if (!getDescriptionBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, description_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) {
+            if (!getUserIdBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, userId_);
             }
             for (int i = 0; i < entries_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, entries_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -3421,7 +3540,7 @@ public final class Acl {
                 return false;
             if (!getEntriesList().equals(other.getEntriesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -3445,7 +3564,7 @@ public final class Acl {
                 hash = (37 * hash) + ENTRIES_FIELD_NUMBER;
                 hash = (53 * hash) + getEntriesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -3539,27 +3658,33 @@ public final class Acl {
 
             // Construct using acl.Acl.AclRuleSet.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getEntriesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 name_ = "";
                 type_ = 0;
                 description_ = "";
                 userId_ = "";
                 if (entriesBuilder_ == null) {
                     entries_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    entries_ = null;
                     entriesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000010);
                 return this;
             }
 
@@ -3585,40 +3710,52 @@ public final class Acl {
             @java.lang.Override
             public acl.Acl.AclRuleSet buildPartial() {
                 acl.Acl.AclRuleSet result = new acl.Acl.AclRuleSet(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(acl.Acl.AclRuleSet result) {
+                int from_bitField0_ = bitField0_;
+                result.name_ = name_;
+                result.type_ = type_;
+                result.description_ = description_;
+                result.userId_ = userId_;
                 if (entriesBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         entries_ = java.util.Collections.unmodifiableList(entries_);
-                        bitField0_ = (bitField0_ & ~0x00000010);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.entries_ = entries_;
                 } else {
                     result.entries_ = entriesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(acl.Acl.AclRuleSet result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.type_ = type_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.description_ = description_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.userId_ = userId_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -3636,7 +3773,6 @@ public final class Acl {
                     return this;
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (other.type_ != 0) {
@@ -3644,19 +3780,17 @@ public final class Acl {
                 }
                 if (!other.getDescription().isEmpty()) {
                     description_ = other.description_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (!other.getUserId().isEmpty()) {
                     userId_ = other.userId_;
-                    bitField0_ |= 0x00000008;
                     onChanged();
                 }
                 if (entriesBuilder_ == null) {
                     if (!other.entries_.isEmpty()) {
                         if (entries_.isEmpty()) {
                             entries_ = other.entries_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureEntriesIsMutable();
                             entries_.addAll(other.entries_);
@@ -3669,14 +3803,14 @@ public final class Acl {
                             entriesBuilder_.dispose();
                             entriesBuilder_ = null;
                             entries_ = other.entries_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             entriesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEntriesFieldBuilder() : null;
                         } else {
                             entriesBuilder_.addAllMessages(other.entries_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -3688,75 +3822,17 @@ public final class Acl {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                acl.Acl.AclRuleSet parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    type_ = input.readEnum();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 26:
-                                {
-                                    description_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    userId_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    acl.Acl.AclEntry m = input.readMessage(acl.Acl.AclEntry.parser(), extensionRegistry);
-                                    if (entriesBuilder_ == null) {
-                                        ensureEntriesIsMutable();
-                                        entries_.add(m);
-                                    } else {
-                                        entriesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 42
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (acl.Acl.AclRuleSet) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -3805,7 +3881,6 @@ public final class Acl {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -3816,7 +3891,6 @@ public final class Acl {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -3832,7 +3906,6 @@ public final class Acl {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -3855,7 +3928,6 @@ public final class Acl {
              */
             public Builder setTypeValue(int value) {
                 type_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -3866,7 +3938,8 @@ public final class Acl {
              */
             @java.lang.Override
             public acl.Acl.AclRuleTypeEnum getType() {
-                acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.forNumber(type_);
+                @SuppressWarnings("deprecation")
+                acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.valueOf(type_);
                 return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result;
             }
 
@@ -3879,7 +3952,6 @@ public final class Acl {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000002;
                 type_ = value.getNumber();
                 onChanged();
                 return this;
@@ -3890,7 +3962,6 @@ public final class Acl {
              * @return This builder for chaining.
              */
             public Builder clearType() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 type_ = 0;
                 onChanged();
                 return this;
@@ -3939,7 +4010,6 @@ public final class Acl {
                     throw new NullPointerException();
                 }
                 description_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -3950,7 +4020,6 @@ public final class Acl {
              */
             public Builder clearDescription() {
                 description_ = getDefaultInstance().getDescription();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -3966,7 +4035,6 @@ public final class Acl {
                 }
                 checkByteStringIsUtf8(value);
                 description_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -4014,7 +4082,6 @@ public final class Acl {
                     throw new NullPointerException();
                 }
                 userId_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -4025,7 +4092,6 @@ public final class Acl {
              */
             public Builder clearUserId() {
                 userId_ = getDefaultInstance().getUserId();
-                bitField0_ = (bitField0_ & ~0x00000008);
                 onChanged();
                 return this;
             }
@@ -4041,7 +4107,6 @@ public final class Acl {
                 }
                 checkByteStringIsUtf8(value);
                 userId_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -4049,9 +4114,9 @@ public final class Acl {
             private java.util.List<acl.Acl.AclEntry> entries_ = java.util.Collections.emptyList();
 
             private void ensureEntriesIsMutable() {
-                if (!((bitField0_ & 0x00000010) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     entries_ = new java.util.ArrayList<acl.Acl.AclEntry>(entries_);
-                    bitField0_ |= 0x00000010;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -4203,7 +4268,7 @@ public final class Acl {
             public Builder clearEntries() {
                 if (entriesBuilder_ == null) {
                     entries_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000010);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     entriesBuilder_.clear();
@@ -4277,7 +4342,7 @@ public final class Acl {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder> getEntriesFieldBuilder() {
                 if (entriesBuilder_ == null) {
-                    entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder>(entries_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
+                    entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder>(entries_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     entries_ = null;
                 }
                 return entriesBuilder_;
@@ -4310,17 +4375,7 @@ public final class Acl {
 
             @java.lang.Override
             public AclRuleSet parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AclRuleSet(input, extensionRegistry);
             }
         };
 
diff --git a/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java b/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java
index 22679d79248b2374c8f96e7f5286ac81e37c8517..4593770498216267b8d2f95dd728fccfbb9dc134 100644
--- a/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java
+++ b/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java
@@ -184,13 +184,17 @@ public final class ContextOuterClass {
          */
         DEVICEDRIVER_GNMI_OPENCONFIG(8),
         /**
-         * <code>DEVICEDRIVER_FLEXSCALE = 9;</code>
+         * <code>DEVICEDRIVER_OPTICAL_TFS = 9;</code>
          */
-        DEVICEDRIVER_FLEXSCALE(9),
+        DEVICEDRIVER_OPTICAL_TFS(9),
         /**
          * <code>DEVICEDRIVER_IETF_ACTN = 10;</code>
          */
         DEVICEDRIVER_IETF_ACTN(10),
+        /**
+         * <code>DEVICEDRIVER_OC = 11;</code>
+         */
+        DEVICEDRIVER_OC(11),
         UNRECOGNIZED(-1);
 
         /**
@@ -243,15 +247,20 @@ public final class ContextOuterClass {
         public static final int DEVICEDRIVER_GNMI_OPENCONFIG_VALUE = 8;
 
         /**
-         * <code>DEVICEDRIVER_FLEXSCALE = 9;</code>
+         * <code>DEVICEDRIVER_OPTICAL_TFS = 9;</code>
          */
-        public static final int DEVICEDRIVER_FLEXSCALE_VALUE = 9;
+        public static final int DEVICEDRIVER_OPTICAL_TFS_VALUE = 9;
 
         /**
          * <code>DEVICEDRIVER_IETF_ACTN = 10;</code>
          */
         public static final int DEVICEDRIVER_IETF_ACTN_VALUE = 10;
 
+        /**
+         * <code>DEVICEDRIVER_OC = 11;</code>
+         */
+        public static final int DEVICEDRIVER_OC_VALUE = 11;
+
         public final int getNumber() {
             if (this == UNRECOGNIZED) {
                 throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
@@ -294,9 +303,11 @@ public final class ContextOuterClass {
                 case 8:
                     return DEVICEDRIVER_GNMI_OPENCONFIG;
                 case 9:
-                    return DEVICEDRIVER_FLEXSCALE;
+                    return DEVICEDRIVER_OPTICAL_TFS;
                 case 10:
                     return DEVICEDRIVER_IETF_ACTN;
+                case 11:
+                    return DEVICEDRIVER_OC;
                 default:
                     return null;
             }
@@ -489,6 +500,10 @@ public final class ContextOuterClass {
          * <code>SERVICETYPE_E2E = 5;</code>
          */
         SERVICETYPE_E2E(5),
+        /**
+         * <code>SERVICETYPE_OPTICAL_CONNECTIVITY = 6;</code>
+         */
+        SERVICETYPE_OPTICAL_CONNECTIVITY(6),
         UNRECOGNIZED(-1);
 
         /**
@@ -521,6 +536,11 @@ public final class ContextOuterClass {
          */
         public static final int SERVICETYPE_E2E_VALUE = 5;
 
+        /**
+         * <code>SERVICETYPE_OPTICAL_CONNECTIVITY = 6;</code>
+         */
+        public static final int SERVICETYPE_OPTICAL_CONNECTIVITY_VALUE = 6;
+
         public final int getNumber() {
             if (this == UNRECOGNIZED) {
                 throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
@@ -556,6 +576,8 @@ public final class ContextOuterClass {
                     return SERVICETYPE_TE;
                 case 5:
                     return SERVICETYPE_E2E;
+                case 6:
+                    return SERVICETYPE_OPTICAL_CONNECTIVITY;
                 default:
                     return null;
             }
@@ -1341,6 +1363,44 @@ public final class ContextOuterClass {
             return new Empty();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Empty(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Empty_descriptor;
         }
@@ -1365,7 +1425,7 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -1374,7 +1434,7 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1388,7 +1448,7 @@ public final class ContextOuterClass {
                 return super.equals(obj);
             }
             context.ContextOuterClass.Empty other = (context.ContextOuterClass.Empty) obj;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -1400,7 +1460,7 @@ public final class ContextOuterClass {
             }
             int hash = 41;
             hash = (19 * hash) + getDescriptor().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -1498,10 +1558,17 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Empty.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
@@ -1536,6 +1603,36 @@ public final class ContextOuterClass {
                 return result;
             }
 
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.Message other) {
                 if (other instanceof context.ContextOuterClass.Empty) {
@@ -1549,7 +1646,7 @@ public final class ContextOuterClass {
             public Builder mergeFrom(context.ContextOuterClass.Empty other) {
                 if (other == context.ContextOuterClass.Empty.getDefaultInstance())
                     return this;
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -1561,35 +1658,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Empty parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Empty) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -1620,17 +1699,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Empty parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Empty(input, extensionRegistry);
             }
         };
 
@@ -1688,6 +1757,50 @@ public final class ContextOuterClass {
             return new Uuid();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Uuid(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                uuid_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Uuid_descriptor;
         }
@@ -1699,8 +1812,7 @@ public final class ContextOuterClass {
 
         public static final int UUID_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object uuid_ = "";
+        private volatile java.lang.Object uuid_;
 
         /**
          * <code>string uuid = 1;</code>
@@ -1750,10 +1862,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) {
+            if (!getUuidBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, uuid_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -1762,10 +1874,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) {
+            if (!getUuidBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, uuid_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1781,7 +1893,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Uuid other = (context.ContextOuterClass.Uuid) obj;
             if (!getUuid().equals(other.getUuid()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -1795,7 +1907,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + UUID_FIELD_NUMBER;
             hash = (53 * hash) + getUuid().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -1889,16 +2001,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Uuid.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 uuid_ = "";
                 return this;
             }
@@ -1925,18 +2043,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Uuid buildPartial() {
                 context.ContextOuterClass.Uuid result = new context.ContextOuterClass.Uuid(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.uuid_ = uuid_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Uuid result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.uuid_ = uuid_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -1954,10 +2093,9 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getUuid().isEmpty()) {
                     uuid_ = other.uuid_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -1969,47 +2107,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Uuid parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    uuid_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Uuid) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private java.lang.Object uuid_ = "";
 
             /**
@@ -2053,7 +2164,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 uuid_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -2064,7 +2174,6 @@ public final class ContextOuterClass {
              */
             public Builder clearUuid() {
                 uuid_ = getDefaultInstance().getUuid();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -2080,7 +2189,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 uuid_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -2112,17 +2220,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Uuid parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Uuid(input, extensionRegistry);
             }
         };
 
@@ -2173,6 +2271,49 @@ public final class ContextOuterClass {
             return new Timestamp();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Timestamp(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 9:
+                            {
+                                timestamp_ = input.readDouble();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
         }
@@ -2184,7 +2325,7 @@ public final class ContextOuterClass {
 
         public static final int TIMESTAMP_FIELD_NUMBER = 1;
 
-        private double timestamp_ = 0D;
+        private double timestamp_;
 
         /**
          * <code>double timestamp = 1;</code>
@@ -2210,10 +2351,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (java.lang.Double.doubleToRawLongBits(timestamp_) != 0) {
+            if (timestamp_ != 0D) {
                 output.writeDouble(1, timestamp_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -2222,10 +2363,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (java.lang.Double.doubleToRawLongBits(timestamp_) != 0) {
+            if (timestamp_ != 0D) {
                 size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, timestamp_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -2241,7 +2382,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Timestamp other = (context.ContextOuterClass.Timestamp) obj;
             if (java.lang.Double.doubleToLongBits(getTimestamp()) != java.lang.Double.doubleToLongBits(other.getTimestamp()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -2255,7 +2396,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashLong(java.lang.Double.doubleToLongBits(getTimestamp()));
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2349,16 +2490,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Timestamp.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 timestamp_ = 0D;
                 return this;
             }
@@ -2385,18 +2532,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Timestamp buildPartial() {
                 context.ContextOuterClass.Timestamp result = new context.ContextOuterClass.Timestamp(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.timestamp_ = timestamp_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Timestamp result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.timestamp_ = timestamp_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -2415,7 +2583,7 @@ public final class ContextOuterClass {
                 if (other.getTimestamp() != 0D) {
                     setTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -2427,47 +2595,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Timestamp parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 9:
-                                {
-                                    timestamp_ = input.readDouble();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 9
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Timestamp) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private double timestamp_;
 
             /**
@@ -2486,7 +2627,6 @@ public final class ContextOuterClass {
              */
             public Builder setTimestamp(double value) {
                 timestamp_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -2496,7 +2636,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 timestamp_ = 0D;
                 onChanged();
                 return this;
@@ -2529,17 +2668,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Timestamp parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Timestamp(input, extensionRegistry);
             }
         };
 
@@ -2614,6 +2743,63 @@ public final class ContextOuterClass {
             return new Event();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Event(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (timestamp_ != null) {
+                                    subBuilder = timestamp_.toBuilder();
+                                }
+                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(timestamp_);
+                                    timestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                int rawValue = input.readEnum();
+                                eventType_ = rawValue;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Event_descriptor;
         }
@@ -2650,12 +2836,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+            return getTimestamp();
         }
 
         public static final int EVENT_TYPE_FIELD_NUMBER = 2;
 
-        private int eventType_ = 0;
+        private int eventType_;
 
         /**
          * <code>.context.EventTypeEnum event_type = 2;</code>
@@ -2672,7 +2858,8 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventTypeEnum getEventType() {
-            context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.forNumber(eventType_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.valueOf(eventType_);
             return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result;
         }
 
@@ -2697,7 +2884,7 @@ public final class ContextOuterClass {
             if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) {
                 output.writeEnum(2, eventType_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -2712,7 +2899,7 @@ public final class ContextOuterClass {
             if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, eventType_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -2734,7 +2921,7 @@ public final class ContextOuterClass {
             }
             if (eventType_ != other.eventType_)
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -2752,7 +2939,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + EVENT_TYPE_FIELD_NUMBER;
             hash = (53 * hash) + eventType_;
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2846,19 +3033,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Event.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
                 eventType_ = 0;
@@ -2887,21 +3081,44 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Event buildPartial() {
                 context.ContextOuterClass.Event result = new context.ContextOuterClass.Event(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (timestampBuilder_ == null) {
+                    result.timestamp_ = timestamp_;
+                } else {
+                    result.timestamp_ = timestampBuilder_.build();
                 }
+                result.eventType_ = eventType_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Event result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.eventType_ = eventType_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -2923,7 +3140,7 @@ public final class ContextOuterClass {
                 if (other.eventType_ != 0) {
                     setEventTypeValue(other.getEventTypeValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -2935,54 +3152,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Event parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    eventType_ = input.readEnum();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Event) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Timestamp timestamp_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
@@ -2992,7 +3175,7 @@ public final class ContextOuterClass {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return timestampBuilder_ != null || timestamp_ != null;
             }
 
             /**
@@ -3016,11 +3199,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3030,11 +3212,10 @@ public final class ContextOuterClass {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3043,16 +3224,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getTimestampBuilder().mergeFrom(value);
+                    if (timestamp_ != null) {
+                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
                     } else {
                         timestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3060,13 +3240,13 @@ public final class ContextOuterClass {
              * <code>.context.Timestamp timestamp = 1;</code>
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                    onChanged();
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -3074,7 +3254,6 @@ public final class ContextOuterClass {
              * <code>.context.Timestamp timestamp = 1;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -3119,7 +3298,6 @@ public final class ContextOuterClass {
              */
             public Builder setEventTypeValue(int value) {
                 eventType_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -3130,7 +3308,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.EventTypeEnum getEventType() {
-                context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.forNumber(eventType_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.valueOf(eventType_);
                 return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result;
             }
 
@@ -3143,7 +3322,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000002;
                 eventType_ = value.getNumber();
                 onChanged();
                 return this;
@@ -3154,7 +3332,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearEventType() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 eventType_ = 0;
                 onChanged();
                 return this;
@@ -3187,17 +3364,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Event parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Event(input, extensionRegistry);
             }
         };
 
@@ -3263,6 +3430,57 @@ public final class ContextOuterClass {
             return new ContextId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ContextId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (contextUuid_ != null) {
+                                    subBuilder = contextUuid_.toBuilder();
+                                }
+                                contextUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextUuid_);
+                                    contextUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ContextId_descriptor;
         }
@@ -3299,7 +3517,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder() {
-            return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
+            return getContextUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -3320,7 +3538,7 @@ public final class ContextOuterClass {
             if (contextUuid_ != null) {
                 output.writeMessage(1, getContextUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -3332,7 +3550,7 @@ public final class ContextOuterClass {
             if (contextUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -3352,7 +3570,7 @@ public final class ContextOuterClass {
                 if (!getContextUuid().equals(other.getContextUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -3368,7 +3586,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONTEXT_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getContextUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -3466,19 +3684,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ContextId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextUuid_ = null;
-                if (contextUuidBuilder_ != null) {
-                    contextUuidBuilder_.dispose();
+                if (contextUuidBuilder_ == null) {
+                    contextUuid_ = null;
+                } else {
+                    contextUuid_ = null;
                     contextUuidBuilder_ = null;
                 }
                 return this;
@@ -3506,18 +3731,43 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ContextId buildPartial() {
                 context.ContextOuterClass.ContextId result = new context.ContextOuterClass.ContextId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (contextUuidBuilder_ == null) {
+                    result.contextUuid_ = contextUuid_;
+                } else {
+                    result.contextUuid_ = contextUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ContextId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextUuid_ = contextUuidBuilder_ == null ? contextUuid_ : contextUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -3536,7 +3786,7 @@ public final class ContextOuterClass {
                 if (other.hasContextUuid()) {
                     mergeContextUuid(other.getContextUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -3548,47 +3798,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ContextId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ContextId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid contextUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> contextUuidBuilder_;
@@ -3598,7 +3821,7 @@ public final class ContextOuterClass {
              * @return Whether the contextUuid field is set.
              */
             public boolean hasContextUuid() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return contextUuidBuilder_ != null || contextUuid_ != null;
             }
 
             /**
@@ -3622,11 +3845,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextUuid_ = value;
+                    onChanged();
                 } else {
                     contextUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3636,11 +3858,10 @@ public final class ContextOuterClass {
             public Builder setContextUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (contextUuidBuilder_ == null) {
                     contextUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3649,16 +3870,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextUuid(context.ContextOuterClass.Uuid value) {
                 if (contextUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextUuid_ != null && contextUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getContextUuidBuilder().mergeFrom(value);
+                    if (contextUuid_ != null) {
+                        contextUuid_ = context.ContextOuterClass.Uuid.newBuilder(contextUuid_).mergeFrom(value).buildPartial();
                     } else {
                         contextUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     contextUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3666,13 +3886,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid context_uuid = 1;</code>
              */
             public Builder clearContextUuid() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextUuid_ = null;
-                if (contextUuidBuilder_ != null) {
-                    contextUuidBuilder_.dispose();
+                if (contextUuidBuilder_ == null) {
+                    contextUuid_ = null;
+                    onChanged();
+                } else {
+                    contextUuid_ = null;
                     contextUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -3680,7 +3900,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid context_uuid = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getContextUuidBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextUuidFieldBuilder().getBuilder();
             }
@@ -3734,17 +3953,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ContextId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ContextId(input, extensionRegistry);
             }
         };
 
@@ -3914,6 +4123,113 @@ public final class ContextOuterClass {
             return new Context();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Context(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                topologyIds_.add(input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                serviceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 42:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
+                                    sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
+                                    mutable_bitField0_ |= 0x00000004;
+                                }
+                                sliceIds_.add(input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 50:
+                            {
+                                context.ContextOuterClass.TeraFlowController.Builder subBuilder = null;
+                                if (controller_ != null) {
+                                    subBuilder = controller_.toBuilder();
+                                }
+                                controller_ = input.readMessage(context.ContextOuterClass.TeraFlowController.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(controller_);
+                                    controller_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000004) != 0)) {
+                    sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Context_descriptor;
         }
@@ -3950,13 +4266,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            return getContextId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -3993,7 +4308,6 @@ public final class ContextOuterClass {
 
         public static final int TOPOLOGY_IDS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;
 
         /**
@@ -4038,7 +4352,6 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_IDS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;
 
         /**
@@ -4083,7 +4396,6 @@ public final class ContextOuterClass {
 
         public static final int SLICE_IDS_FIELD_NUMBER = 5;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.SliceId> sliceIds_;
 
         /**
@@ -4153,7 +4465,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() {
-            return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
+            return getController();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -4174,7 +4486,7 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 output.writeMessage(1, getContextId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < topologyIds_.size(); i++) {
@@ -4189,7 +4501,7 @@ public final class ContextOuterClass {
             if (controller_ != null) {
                 output.writeMessage(6, getController());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -4201,7 +4513,7 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < topologyIds_.size(); i++) {
@@ -4216,7 +4528,7 @@ public final class ContextOuterClass {
             if (controller_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getController());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -4250,7 +4562,7 @@ public final class ContextOuterClass {
                 if (!getController().equals(other.getController()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -4284,7 +4596,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONTROLLER_FIELD_NUMBER;
                 hash = (53 * hash) + getController().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -4378,46 +4690,54 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Context.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getTopologyIdsFieldBuilder();
+                    getServiceIdsFieldBuilder();
+                    getSliceIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
                 name_ = "";
                 if (topologyIdsBuilder_ == null) {
                     topologyIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    topologyIds_ = null;
                     topologyIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 if (serviceIdsBuilder_ == null) {
                     serviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    serviceIds_ = null;
                     serviceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
                 if (sliceIdsBuilder_ == null) {
                     sliceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
                 } else {
-                    sliceIds_ = null;
                     sliceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000010);
-                controller_ = null;
-                if (controllerBuilder_ != null) {
-                    controllerBuilder_.dispose();
+                if (controllerBuilder_ == null) {
+                    controller_ = null;
+                } else {
+                    controller_ = null;
                     controllerBuilder_ = null;
                 }
                 return this;
@@ -4445,55 +4765,77 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Context buildPartial() {
                 context.ContextOuterClass.Context result = new context.ContextOuterClass.Context(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Context result) {
+                result.name_ = name_;
                 if (topologyIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.topologyIds_ = topologyIds_;
                 } else {
                     result.topologyIds_ = topologyIdsBuilder_.build();
                 }
                 if (serviceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.serviceIds_ = serviceIds_;
                 } else {
                     result.serviceIds_ = serviceIdsBuilder_.build();
                 }
                 if (sliceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000010);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.sliceIds_ = sliceIds_;
                 } else {
                     result.sliceIds_ = sliceIdsBuilder_.build();
                 }
+                if (controllerBuilder_ == null) {
+                    result.controller_ = controller_;
+                } else {
+                    result.controller_ = controllerBuilder_.build();
+                }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Context result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.controller_ = controllerBuilder_ == null ? controller_ : controllerBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -4514,14 +4856,13 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (topologyIdsBuilder_ == null) {
                     if (!other.topologyIds_.isEmpty()) {
                         if (topologyIds_.isEmpty()) {
                             topologyIds_ = other.topologyIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureTopologyIdsIsMutable();
                             topologyIds_.addAll(other.topologyIds_);
@@ -4534,7 +4875,7 @@ public final class ContextOuterClass {
                             topologyIdsBuilder_.dispose();
                             topologyIdsBuilder_ = null;
                             topologyIds_ = other.topologyIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             topologyIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getTopologyIdsFieldBuilder() : null;
                         } else {
                             topologyIdsBuilder_.addAllMessages(other.topologyIds_);
@@ -4545,7 +4886,7 @@ public final class ContextOuterClass {
                     if (!other.serviceIds_.isEmpty()) {
                         if (serviceIds_.isEmpty()) {
                             serviceIds_ = other.serviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureServiceIdsIsMutable();
                             serviceIds_.addAll(other.serviceIds_);
@@ -4558,7 +4899,7 @@ public final class ContextOuterClass {
                             serviceIdsBuilder_.dispose();
                             serviceIdsBuilder_ = null;
                             serviceIds_ = other.serviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             serviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceIdsFieldBuilder() : null;
                         } else {
                             serviceIdsBuilder_.addAllMessages(other.serviceIds_);
@@ -4569,7 +4910,7 @@ public final class ContextOuterClass {
                     if (!other.sliceIds_.isEmpty()) {
                         if (sliceIds_.isEmpty()) {
                             sliceIds_ = other.sliceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureSliceIdsIsMutable();
                             sliceIds_.addAll(other.sliceIds_);
@@ -4582,7 +4923,7 @@ public final class ContextOuterClass {
                             sliceIdsBuilder_.dispose();
                             sliceIdsBuilder_ = null;
                             sliceIds_ = other.sliceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             sliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceIdsFieldBuilder() : null;
                         } else {
                             sliceIdsBuilder_.addAllMessages(other.sliceIds_);
@@ -4592,7 +4933,7 @@ public final class ContextOuterClass {
                 if (other.hasController()) {
                     mergeController(other.getController());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -4604,92 +4945,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Context parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.TopologyId m = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
-                                    if (topologyIdsBuilder_ == null) {
-                                        ensureTopologyIdsIsMutable();
-                                        topologyIds_.add(m);
-                                    } else {
-                                        topologyIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                    if (serviceIdsBuilder_ == null) {
-                                        ensureServiceIdsIsMutable();
-                                        serviceIds_.add(m);
-                                    } else {
-                                        serviceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-                                    if (sliceIdsBuilder_ == null) {
-                                        ensureSliceIdsIsMutable();
-                                        sliceIds_.add(m);
-                                    } else {
-                                        sliceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    input.readMessage(getControllerFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 50
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Context) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -4704,7 +4970,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return contextIdBuilder_ != null || contextId_ != null;
             }
 
             /**
@@ -4728,11 +4994,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -4742,11 +5007,10 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -4755,16 +5019,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
                     } else {
                         contextId_ = value;
                     }
+                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -4772,13 +5035,13 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -4786,7 +5049,6 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -4856,7 +5118,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -4867,7 +5128,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -4883,7 +5143,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -4891,9 +5150,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_ = java.util.Collections.emptyList();
 
             private void ensureTopologyIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>(topologyIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -5045,7 +5304,7 @@ public final class ContextOuterClass {
             public Builder clearTopologyIds() {
                 if (topologyIdsBuilder_ == null) {
                     topologyIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     topologyIdsBuilder_.clear();
@@ -5119,7 +5378,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsFieldBuilder() {
                 if (topologyIdsBuilder_ == null) {
-                    topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(topologyIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(topologyIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     topologyIds_ = null;
                 }
                 return topologyIdsBuilder_;
@@ -5128,9 +5387,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_ = java.util.Collections.emptyList();
 
             private void ensureServiceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(serviceIds_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -5282,7 +5541,7 @@ public final class ContextOuterClass {
             public Builder clearServiceIds() {
                 if (serviceIdsBuilder_ == null) {
                     serviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     serviceIdsBuilder_.clear();
@@ -5356,7 +5615,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsFieldBuilder() {
                 if (serviceIdsBuilder_ == null) {
-                    serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(serviceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(serviceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     serviceIds_ = null;
                 }
                 return serviceIdsBuilder_;
@@ -5365,9 +5624,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.SliceId> sliceIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000010) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceIds_);
-                    bitField0_ |= 0x00000010;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -5519,7 +5778,7 @@ public final class ContextOuterClass {
             public Builder clearSliceIds() {
                 if (sliceIdsBuilder_ == null) {
                     sliceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000010);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     sliceIdsBuilder_.clear();
@@ -5593,7 +5852,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsFieldBuilder() {
                 if (sliceIdsBuilder_ == null) {
-                    sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
+                    sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     sliceIds_ = null;
                 }
                 return sliceIdsBuilder_;
@@ -5608,7 +5867,7 @@ public final class ContextOuterClass {
              * @return Whether the controller field is set.
              */
             public boolean hasController() {
-                return ((bitField0_ & 0x00000020) != 0);
+                return controllerBuilder_ != null || controller_ != null;
             }
 
             /**
@@ -5632,11 +5891,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     controller_ = value;
+                    onChanged();
                 } else {
                     controllerBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -5646,11 +5904,10 @@ public final class ContextOuterClass {
             public Builder setController(context.ContextOuterClass.TeraFlowController.Builder builderForValue) {
                 if (controllerBuilder_ == null) {
                     controller_ = builderForValue.build();
+                    onChanged();
                 } else {
                     controllerBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -5659,16 +5916,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeController(context.ContextOuterClass.TeraFlowController value) {
                 if (controllerBuilder_ == null) {
-                    if (((bitField0_ & 0x00000020) != 0) && controller_ != null && controller_ != context.ContextOuterClass.TeraFlowController.getDefaultInstance()) {
-                        getControllerBuilder().mergeFrom(value);
+                    if (controller_ != null) {
+                        controller_ = context.ContextOuterClass.TeraFlowController.newBuilder(controller_).mergeFrom(value).buildPartial();
                     } else {
                         controller_ = value;
                     }
+                    onChanged();
                 } else {
                     controllerBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -5676,13 +5932,13 @@ public final class ContextOuterClass {
              * <code>.context.TeraFlowController controller = 6;</code>
              */
             public Builder clearController() {
-                bitField0_ = (bitField0_ & ~0x00000020);
-                controller_ = null;
-                if (controllerBuilder_ != null) {
-                    controllerBuilder_.dispose();
+                if (controllerBuilder_ == null) {
+                    controller_ = null;
+                    onChanged();
+                } else {
+                    controller_ = null;
                     controllerBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -5690,7 +5946,6 @@ public final class ContextOuterClass {
              * <code>.context.TeraFlowController controller = 6;</code>
              */
             public context.ContextOuterClass.TeraFlowController.Builder getControllerBuilder() {
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return getControllerFieldBuilder().getBuilder();
             }
@@ -5744,17 +5999,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Context parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Context(input, extensionRegistry);
             }
         };
 
@@ -5825,6 +6070,57 @@ public final class ContextOuterClass {
             return new ContextIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ContextIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    contextIds_ = new java.util.ArrayList<context.ContextOuterClass.ContextId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                contextIds_.add(input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    contextIds_ = java.util.Collections.unmodifiableList(contextIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
         }
@@ -5836,7 +6132,6 @@ public final class ContextOuterClass {
 
         public static final int CONTEXT_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ContextId> contextIds_;
 
         /**
@@ -5897,7 +6192,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < contextIds_.size(); i++) {
                 output.writeMessage(1, contextIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -5909,7 +6204,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < contextIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, contextIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -5925,7 +6220,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ContextIdList other = (context.ContextOuterClass.ContextIdList) obj;
             if (!getContextIdsList().equals(other.getContextIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -5941,7 +6236,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONTEXT_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getContextIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -6035,23 +6330,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ContextIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getContextIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (contextIdsBuilder_ == null) {
                     contextIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    contextIds_ = null;
                     contextIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -6077,15 +6378,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ContextIdList buildPartial() {
                 context.ContextOuterClass.ContextIdList result = new context.ContextOuterClass.ContextIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ContextIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (contextIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         contextIds_ = java.util.Collections.unmodifiableList(contextIds_);
@@ -6095,10 +6388,38 @@ public final class ContextOuterClass {
                 } else {
                     result.contextIds_ = contextIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ContextIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -6138,7 +6459,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -6150,47 +6471,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ContextIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.ContextId m = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-                                    if (contextIdsBuilder_ == null) {
-                                        ensureContextIdsIsMutable();
-                                        contextIds_.add(m);
-                                    } else {
-                                        contextIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ContextIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -6460,17 +6751,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ContextIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ContextIdList(input, extensionRegistry);
             }
         };
 
@@ -6541,6 +6822,57 @@ public final class ContextOuterClass {
             return new ContextList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ContextList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    contexts_ = new java.util.ArrayList<context.ContextOuterClass.Context>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                contexts_.add(input.readMessage(context.ContextOuterClass.Context.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    contexts_ = java.util.Collections.unmodifiableList(contexts_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
         }
@@ -6552,7 +6884,6 @@ public final class ContextOuterClass {
 
         public static final int CONTEXTS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Context> contexts_;
 
         /**
@@ -6613,7 +6944,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < contexts_.size(); i++) {
                 output.writeMessage(1, contexts_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -6625,7 +6956,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < contexts_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, contexts_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -6641,7 +6972,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ContextList other = (context.ContextOuterClass.ContextList) obj;
             if (!getContextsList().equals(other.getContextsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -6657,7 +6988,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONTEXTS_FIELD_NUMBER;
                 hash = (53 * hash) + getContextsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -6751,23 +7082,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ContextList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getContextsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (contextsBuilder_ == null) {
                     contexts_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    contexts_ = null;
                     contextsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -6793,15 +7130,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ContextList buildPartial() {
                 context.ContextOuterClass.ContextList result = new context.ContextOuterClass.ContextList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ContextList result) {
+                int from_bitField0_ = bitField0_;
                 if (contextsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         contexts_ = java.util.Collections.unmodifiableList(contexts_);
@@ -6811,10 +7140,38 @@ public final class ContextOuterClass {
                 } else {
                     result.contexts_ = contextsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ContextList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -6854,7 +7211,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -6866,47 +7223,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ContextList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Context m = input.readMessage(context.ContextOuterClass.Context.parser(), extensionRegistry);
-                                    if (contextsBuilder_ == null) {
-                                        ensureContextsIsMutable();
-                                        contexts_.add(m);
-                                    } else {
-                                        contextsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ContextList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -7176,17 +7503,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ContextList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ContextList(input, extensionRegistry);
             }
         };
 
@@ -7265,6 +7582,70 @@ public final class ContextOuterClass {
             return new ContextEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ContextEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
         }
@@ -7301,7 +7682,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int CONTEXT_ID_FIELD_NUMBER = 2;
@@ -7331,7 +7712,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            return getContextId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -7355,7 +7736,7 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 output.writeMessage(2, getContextId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -7370,7 +7751,7 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getContextId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -7396,7 +7777,7 @@ public final class ContextOuterClass {
                 if (!getContextId().equals(other.getContextId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -7416,7 +7797,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getContextId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -7510,24 +7891,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ContextEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
                 return this;
@@ -7555,21 +7944,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ContextEvent buildPartial() {
                 context.ContextOuterClass.ContextEvent result = new context.ContextOuterClass.ContextEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ContextEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -7591,7 +8007,7 @@ public final class ContextOuterClass {
                 if (other.hasContextId()) {
                     mergeContextId(other.getContextId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -7603,54 +8019,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ContextEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ContextEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -7660,7 +8042,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -7684,11 +8066,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -7698,11 +8079,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -7711,16 +8091,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -7728,13 +8107,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -7742,7 +8121,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -7778,7 +8156,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return contextIdBuilder_ != null || contextId_ != null;
             }
 
             /**
@@ -7802,11 +8180,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -7816,11 +8193,10 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -7829,16 +8205,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
                     } else {
                         contextId_ = value;
                     }
+                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -7846,13 +8221,13 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 2;</code>
              */
             public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -7860,7 +8235,6 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 2;</code>
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -7914,17 +8288,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ContextEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ContextEvent(input, extensionRegistry);
             }
         };
 
@@ -8007,6 +8371,70 @@ public final class ContextOuterClass {
             return new TopologyId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private TopologyId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (topologyUuid_ != null) {
+                                    subBuilder = topologyUuid_.toBuilder();
+                                }
+                                topologyUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(topologyUuid_);
+                                    topologyUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
         }
@@ -8043,7 +8471,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            return getContextId();
         }
 
         public static final int TOPOLOGY_UUID_FIELD_NUMBER = 2;
@@ -8073,7 +8501,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder() {
-            return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
+            return getTopologyUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -8097,7 +8525,7 @@ public final class ContextOuterClass {
             if (topologyUuid_ != null) {
                 output.writeMessage(2, getTopologyUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -8112,7 +8540,7 @@ public final class ContextOuterClass {
             if (topologyUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTopologyUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -8138,7 +8566,7 @@ public final class ContextOuterClass {
                 if (!getTopologyUuid().equals(other.getTopologyUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -8158,7 +8586,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TOPOLOGY_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getTopologyUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -8256,24 +8684,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.TopologyId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                topologyUuid_ = null;
-                if (topologyUuidBuilder_ != null) {
-                    topologyUuidBuilder_.dispose();
+                if (topologyUuidBuilder_ == null) {
+                    topologyUuid_ = null;
+                } else {
+                    topologyUuid_ = null;
                     topologyUuidBuilder_ = null;
                 }
                 return this;
@@ -8301,21 +8737,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.TopologyId buildPartial() {
                 context.ContextOuterClass.TopologyId result = new context.ContextOuterClass.TopologyId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
+                }
+                if (topologyUuidBuilder_ == null) {
+                    result.topologyUuid_ = topologyUuid_;
+                } else {
+                    result.topologyUuid_ = topologyUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.TopologyId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.topologyUuid_ = topologyUuidBuilder_ == null ? topologyUuid_ : topologyUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -8337,7 +8800,7 @@ public final class ContextOuterClass {
                 if (other.hasTopologyUuid()) {
                     mergeTopologyUuid(other.getTopologyUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -8349,54 +8812,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.TopologyId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getTopologyUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.TopologyId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
@@ -8406,7 +8835,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return contextIdBuilder_ != null || contextId_ != null;
             }
 
             /**
@@ -8430,11 +8859,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -8444,11 +8872,10 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -8457,16 +8884,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
                     } else {
                         contextId_ = value;
                     }
+                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -8474,13 +8900,13 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -8488,7 +8914,6 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -8524,7 +8949,7 @@ public final class ContextOuterClass {
              * @return Whether the topologyUuid field is set.
              */
             public boolean hasTopologyUuid() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return topologyUuidBuilder_ != null || topologyUuid_ != null;
             }
 
             /**
@@ -8548,11 +8973,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     topologyUuid_ = value;
+                    onChanged();
                 } else {
                     topologyUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -8562,11 +8986,10 @@ public final class ContextOuterClass {
             public Builder setTopologyUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (topologyUuidBuilder_ == null) {
                     topologyUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     topologyUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -8575,16 +8998,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTopologyUuid(context.ContextOuterClass.Uuid value) {
                 if (topologyUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && topologyUuid_ != null && topologyUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getTopologyUuidBuilder().mergeFrom(value);
+                    if (topologyUuid_ != null) {
+                        topologyUuid_ = context.ContextOuterClass.Uuid.newBuilder(topologyUuid_).mergeFrom(value).buildPartial();
                     } else {
                         topologyUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     topologyUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -8592,13 +9014,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid topology_uuid = 2;</code>
              */
             public Builder clearTopologyUuid() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                topologyUuid_ = null;
-                if (topologyUuidBuilder_ != null) {
-                    topologyUuidBuilder_.dispose();
+                if (topologyUuidBuilder_ == null) {
+                    topologyUuid_ = null;
+                    onChanged();
+                } else {
+                    topologyUuid_ = null;
                     topologyUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -8606,7 +9028,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid topology_uuid = 2;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getTopologyUuidBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getTopologyUuidFieldBuilder().getBuilder();
             }
@@ -8660,17 +9081,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public TopologyId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new TopologyId(input, extensionRegistry);
             }
         };
 
@@ -8797,6 +9208,88 @@ public final class ContextOuterClass {
             return new Topology();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Topology(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.TopologyId.Builder subBuilder = null;
+                                if (topologyId_ != null) {
+                                    subBuilder = topologyId_.toBuilder();
+                                }
+                                topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(topologyId_);
+                                    topologyId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                deviceIds_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                linkIds_.add(input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Topology_descriptor;
         }
@@ -8833,13 +9326,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+            return getTopologyId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -8876,7 +9368,6 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_IDS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
 
         /**
@@ -8921,7 +9412,6 @@ public final class ContextOuterClass {
 
         public static final int LINK_IDS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
 
         /**
@@ -8982,7 +9472,7 @@ public final class ContextOuterClass {
             if (topologyId_ != null) {
                 output.writeMessage(1, getTopologyId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < deviceIds_.size(); i++) {
@@ -8991,7 +9481,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 output.writeMessage(4, linkIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -9003,7 +9493,7 @@ public final class ContextOuterClass {
             if (topologyId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < deviceIds_.size(); i++) {
@@ -9012,7 +9502,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -9038,7 +9528,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getLinkIdsList().equals(other.getLinkIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -9064,7 +9554,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -9158,36 +9648,43 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Topology.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDeviceIdsFieldBuilder();
+                    getLinkIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
                 name_ = "";
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    deviceIds_ = null;
                     deviceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    linkIds_ = null;
                     linkIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
                 return this;
             }
 
@@ -9213,43 +9710,63 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Topology buildPartial() {
                 context.ContextOuterClass.Topology result = new context.ContextOuterClass.Topology(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (topologyIdBuilder_ == null) {
+                    result.topologyId_ = topologyId_;
+                } else {
+                    result.topologyId_ = topologyIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Topology result) {
+                result.name_ = name_;
                 if (deviceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.deviceIds_ = deviceIds_;
                 } else {
                     result.deviceIds_ = deviceIdsBuilder_.build();
                 }
                 if (linkIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.linkIds_ = linkIds_;
                 } else {
                     result.linkIds_ = linkIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Topology result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -9270,14 +9787,13 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (deviceIdsBuilder_ == null) {
                     if (!other.deviceIds_.isEmpty()) {
                         if (deviceIds_.isEmpty()) {
                             deviceIds_ = other.deviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureDeviceIdsIsMutable();
                             deviceIds_.addAll(other.deviceIds_);
@@ -9290,7 +9806,7 @@ public final class ContextOuterClass {
                             deviceIdsBuilder_.dispose();
                             deviceIdsBuilder_ = null;
                             deviceIds_ = other.deviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null;
                         } else {
                             deviceIdsBuilder_.addAllMessages(other.deviceIds_);
@@ -9301,7 +9817,7 @@ public final class ContextOuterClass {
                     if (!other.linkIds_.isEmpty()) {
                         if (linkIds_.isEmpty()) {
                             linkIds_ = other.linkIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureLinkIdsIsMutable();
                             linkIds_.addAll(other.linkIds_);
@@ -9314,14 +9830,14 @@ public final class ContextOuterClass {
                             linkIdsBuilder_.dispose();
                             linkIdsBuilder_ = null;
                             linkIds_ = other.linkIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null;
                         } else {
                             linkIdsBuilder_.addAllMessages(other.linkIds_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -9333,73 +9849,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Topology parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-                                    if (deviceIdsBuilder_ == null) {
-                                        ensureDeviceIdsIsMutable();
-                                        deviceIds_.add(m);
-                                    } else {
-                                        deviceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-                                    if (linkIdsBuilder_ == null) {
-                                        ensureLinkIdsIsMutable();
-                                        linkIds_.add(m);
-                                    } else {
-                                        linkIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Topology) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -9414,7 +9874,7 @@ public final class ContextOuterClass {
              * @return Whether the topologyId field is set.
              */
             public boolean hasTopologyId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return topologyIdBuilder_ != null || topologyId_ != null;
             }
 
             /**
@@ -9438,11 +9898,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     topologyId_ = value;
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -9452,11 +9911,10 @@ public final class ContextOuterClass {
             public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                 if (topologyIdBuilder_ == null) {
                     topologyId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -9465,16 +9923,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                 if (topologyIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
-                        getTopologyIdBuilder().mergeFrom(value);
+                    if (topologyId_ != null) {
+                        topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
                     } else {
                         topologyId_ = value;
                     }
+                    onChanged();
                 } else {
                     topologyIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -9482,13 +9939,13 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 1;</code>
              */
             public Builder clearTopologyId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                    onChanged();
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -9496,7 +9953,6 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 1;</code>
              */
             public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTopologyIdFieldBuilder().getBuilder();
             }
@@ -9566,7 +10022,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -9577,7 +10032,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -9593,7 +10047,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -9601,9 +10054,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ = java.util.Collections.emptyList();
 
             private void ensureDeviceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -9755,7 +10208,7 @@ public final class ContextOuterClass {
             public Builder clearDeviceIds() {
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     deviceIdsBuilder_.clear();
@@ -9829,7 +10282,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsFieldBuilder() {
                 if (deviceIdsBuilder_ == null) {
-                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     deviceIds_ = null;
                 }
                 return deviceIdsBuilder_;
@@ -9838,9 +10291,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.LinkId> linkIds_ = java.util.Collections.emptyList();
 
             private void ensureLinkIdsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -9992,7 +10445,7 @@ public final class ContextOuterClass {
             public Builder clearLinkIds() {
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     linkIdsBuilder_.clear();
@@ -10066,7 +10519,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsFieldBuilder() {
                 if (linkIdsBuilder_ == null) {
-                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     linkIds_ = null;
                 }
                 return linkIdsBuilder_;
@@ -10099,17 +10552,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Topology parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Topology(input, extensionRegistry);
             }
         };
 
@@ -10236,6 +10679,88 @@ public final class ContextOuterClass {
             return new TopologyDetails();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private TopologyDetails(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.TopologyId.Builder subBuilder = null;
+                                if (topologyId_ != null) {
+                                    subBuilder = topologyId_.toBuilder();
+                                }
+                                topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(topologyId_);
+                                    topologyId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                devices_.add(input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    links_ = new java.util.ArrayList<context.ContextOuterClass.Link>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                links_.add(input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    devices_ = java.util.Collections.unmodifiableList(devices_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    links_ = java.util.Collections.unmodifiableList(links_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
         }
@@ -10272,13 +10797,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+            return getTopologyId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -10315,7 +10839,6 @@ public final class ContextOuterClass {
 
         public static final int DEVICES_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Device> devices_;
 
         /**
@@ -10360,7 +10883,6 @@ public final class ContextOuterClass {
 
         public static final int LINKS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Link> links_;
 
         /**
@@ -10421,7 +10943,7 @@ public final class ContextOuterClass {
             if (topologyId_ != null) {
                 output.writeMessage(1, getTopologyId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < devices_.size(); i++) {
@@ -10430,7 +10952,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < links_.size(); i++) {
                 output.writeMessage(4, links_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -10442,7 +10964,7 @@ public final class ContextOuterClass {
             if (topologyId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < devices_.size(); i++) {
@@ -10451,7 +10973,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < links_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, links_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -10477,7 +10999,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getLinksList().equals(other.getLinksList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -10503,7 +11025,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINKS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinksList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -10597,36 +11119,43 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.TopologyDetails.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDevicesFieldBuilder();
+                    getLinksFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
                 name_ = "";
                 if (devicesBuilder_ == null) {
                     devices_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    devices_ = null;
                     devicesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 if (linksBuilder_ == null) {
                     links_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    links_ = null;
                     linksBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
                 return this;
             }
 
@@ -10652,43 +11181,63 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.TopologyDetails buildPartial() {
                 context.ContextOuterClass.TopologyDetails result = new context.ContextOuterClass.TopologyDetails(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (topologyIdBuilder_ == null) {
+                    result.topologyId_ = topologyId_;
+                } else {
+                    result.topologyId_ = topologyIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyDetails result) {
+                result.name_ = name_;
                 if (devicesBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         devices_ = java.util.Collections.unmodifiableList(devices_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.devices_ = devices_;
                 } else {
                     result.devices_ = devicesBuilder_.build();
                 }
                 if (linksBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         links_ = java.util.Collections.unmodifiableList(links_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.links_ = links_;
                 } else {
                     result.links_ = linksBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.TopologyDetails result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -10709,14 +11258,13 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (devicesBuilder_ == null) {
                     if (!other.devices_.isEmpty()) {
                         if (devices_.isEmpty()) {
                             devices_ = other.devices_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureDevicesIsMutable();
                             devices_.addAll(other.devices_);
@@ -10729,7 +11277,7 @@ public final class ContextOuterClass {
                             devicesBuilder_.dispose();
                             devicesBuilder_ = null;
                             devices_ = other.devices_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             devicesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDevicesFieldBuilder() : null;
                         } else {
                             devicesBuilder_.addAllMessages(other.devices_);
@@ -10740,7 +11288,7 @@ public final class ContextOuterClass {
                     if (!other.links_.isEmpty()) {
                         if (links_.isEmpty()) {
                             links_ = other.links_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureLinksIsMutable();
                             links_.addAll(other.links_);
@@ -10753,14 +11301,14 @@ public final class ContextOuterClass {
                             linksBuilder_.dispose();
                             linksBuilder_ = null;
                             links_ = other.links_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             linksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinksFieldBuilder() : null;
                         } else {
                             linksBuilder_.addAllMessages(other.links_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -10772,73 +11320,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.TopologyDetails parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.Device m = input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry);
-                                    if (devicesBuilder_ == null) {
-                                        ensureDevicesIsMutable();
-                                        devices_.add(m);
-                                    } else {
-                                        devicesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    context.ContextOuterClass.Link m = input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry);
-                                    if (linksBuilder_ == null) {
-                                        ensureLinksIsMutable();
-                                        links_.add(m);
-                                    } else {
-                                        linksBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.TopologyDetails) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -10853,7 +11345,7 @@ public final class ContextOuterClass {
              * @return Whether the topologyId field is set.
              */
             public boolean hasTopologyId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return topologyIdBuilder_ != null || topologyId_ != null;
             }
 
             /**
@@ -10877,11 +11369,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     topologyId_ = value;
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -10891,11 +11382,10 @@ public final class ContextOuterClass {
             public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                 if (topologyIdBuilder_ == null) {
                     topologyId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -10904,16 +11394,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                 if (topologyIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
-                        getTopologyIdBuilder().mergeFrom(value);
+                    if (topologyId_ != null) {
+                        topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
                     } else {
                         topologyId_ = value;
                     }
+                    onChanged();
                 } else {
                     topologyIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -10921,13 +11410,13 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 1;</code>
              */
             public Builder clearTopologyId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                    onChanged();
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -10935,7 +11424,6 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 1;</code>
              */
             public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTopologyIdFieldBuilder().getBuilder();
             }
@@ -11005,7 +11493,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -11016,7 +11503,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -11032,7 +11518,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -11040,9 +11525,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.Device> devices_ = java.util.Collections.emptyList();
 
             private void ensureDevicesIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>(devices_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -11194,7 +11679,7 @@ public final class ContextOuterClass {
             public Builder clearDevices() {
                 if (devicesBuilder_ == null) {
                     devices_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     devicesBuilder_.clear();
@@ -11268,7 +11753,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> getDevicesFieldBuilder() {
                 if (devicesBuilder_ == null) {
-                    devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder>(devices_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder>(devices_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     devices_ = null;
                 }
                 return devicesBuilder_;
@@ -11277,9 +11762,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.Link> links_ = java.util.Collections.emptyList();
 
             private void ensureLinksIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     links_ = new java.util.ArrayList<context.ContextOuterClass.Link>(links_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -11431,7 +11916,7 @@ public final class ContextOuterClass {
             public Builder clearLinks() {
                 if (linksBuilder_ == null) {
                     links_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     linksBuilder_.clear();
@@ -11505,7 +11990,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> getLinksFieldBuilder() {
                 if (linksBuilder_ == null) {
-                    linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder>(links_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder>(links_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     links_ = null;
                 }
                 return linksBuilder_;
@@ -11538,17 +12023,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public TopologyDetails parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new TopologyDetails(input, extensionRegistry);
             }
         };
 
@@ -11619,6 +12094,57 @@ public final class ContextOuterClass {
             return new TopologyIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private TopologyIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                topologyIds_.add(input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
         }
@@ -11630,7 +12156,6 @@ public final class ContextOuterClass {
 
         public static final int TOPOLOGY_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;
 
         /**
@@ -11691,7 +12216,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < topologyIds_.size(); i++) {
                 output.writeMessage(1, topologyIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -11703,7 +12228,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < topologyIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, topologyIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -11719,7 +12244,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.TopologyIdList other = (context.ContextOuterClass.TopologyIdList) obj;
             if (!getTopologyIdsList().equals(other.getTopologyIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -11735,7 +12260,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TOPOLOGY_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getTopologyIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -11829,23 +12354,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.TopologyIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getTopologyIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (topologyIdsBuilder_ == null) {
                     topologyIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    topologyIds_ = null;
                     topologyIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -11871,15 +12402,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.TopologyIdList buildPartial() {
                 context.ContextOuterClass.TopologyIdList result = new context.ContextOuterClass.TopologyIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (topologyIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
@@ -11889,10 +12412,38 @@ public final class ContextOuterClass {
                 } else {
                     result.topologyIds_ = topologyIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.TopologyIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -11932,7 +12483,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -11944,47 +12495,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.TopologyIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.TopologyId m = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
-                                    if (topologyIdsBuilder_ == null) {
-                                        ensureTopologyIdsIsMutable();
-                                        topologyIds_.add(m);
-                                    } else {
-                                        topologyIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.TopologyIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -12254,17 +12775,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public TopologyIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new TopologyIdList(input, extensionRegistry);
             }
         };
 
@@ -12335,6 +12846,57 @@ public final class ContextOuterClass {
             return new TopologyList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private TopologyList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    topologies_ = new java.util.ArrayList<context.ContextOuterClass.Topology>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                topologies_.add(input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    topologies_ = java.util.Collections.unmodifiableList(topologies_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
         }
@@ -12346,7 +12908,6 @@ public final class ContextOuterClass {
 
         public static final int TOPOLOGIES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Topology> topologies_;
 
         /**
@@ -12407,7 +12968,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < topologies_.size(); i++) {
                 output.writeMessage(1, topologies_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -12419,7 +12980,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < topologies_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, topologies_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -12435,7 +12996,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.TopologyList other = (context.ContextOuterClass.TopologyList) obj;
             if (!getTopologiesList().equals(other.getTopologiesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -12451,7 +13012,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TOPOLOGIES_FIELD_NUMBER;
                 hash = (53 * hash) + getTopologiesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -12545,23 +13106,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.TopologyList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getTopologiesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (topologiesBuilder_ == null) {
                     topologies_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    topologies_ = null;
                     topologiesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -12587,15 +13154,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.TopologyList buildPartial() {
                 context.ContextOuterClass.TopologyList result = new context.ContextOuterClass.TopologyList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyList result) {
+                int from_bitField0_ = bitField0_;
                 if (topologiesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         topologies_ = java.util.Collections.unmodifiableList(topologies_);
@@ -12605,10 +13164,38 @@ public final class ContextOuterClass {
                 } else {
                     result.topologies_ = topologiesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.TopologyList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -12648,7 +13235,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -12660,47 +13247,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.TopologyList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Topology m = input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry);
-                                    if (topologiesBuilder_ == null) {
-                                        ensureTopologiesIsMutable();
-                                        topologies_.add(m);
-                                    } else {
-                                        topologiesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.TopologyList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -12970,17 +13527,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public TopologyList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new TopologyList(input, extensionRegistry);
             }
         };
 
@@ -13059,6 +13606,70 @@ public final class ContextOuterClass {
             return new TopologyEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private TopologyEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.TopologyId.Builder subBuilder = null;
+                                if (topologyId_ != null) {
+                                    subBuilder = topologyId_.toBuilder();
+                                }
+                                topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(topologyId_);
+                                    topologyId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
         }
@@ -13095,7 +13706,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int TOPOLOGY_ID_FIELD_NUMBER = 2;
@@ -13125,7 +13736,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+            return getTopologyId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -13149,7 +13760,7 @@ public final class ContextOuterClass {
             if (topologyId_ != null) {
                 output.writeMessage(2, getTopologyId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -13164,7 +13775,7 @@ public final class ContextOuterClass {
             if (topologyId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTopologyId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -13190,7 +13801,7 @@ public final class ContextOuterClass {
                 if (!getTopologyId().equals(other.getTopologyId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -13210,7 +13821,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getTopologyId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -13304,24 +13915,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.TopologyEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
                 return this;
@@ -13349,21 +13968,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.TopologyEvent buildPartial() {
                 context.ContextOuterClass.TopologyEvent result = new context.ContextOuterClass.TopologyEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (topologyIdBuilder_ == null) {
+                    result.topologyId_ = topologyId_;
+                } else {
+                    result.topologyId_ = topologyIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.TopologyEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -13385,7 +14031,7 @@ public final class ContextOuterClass {
                 if (other.hasTopologyId()) {
                     mergeTopologyId(other.getTopologyId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -13397,54 +14043,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.TopologyEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.TopologyEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -13454,7 +14066,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -13478,11 +14090,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -13492,11 +14103,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -13505,16 +14115,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -13522,13 +14131,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -13536,7 +14145,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -13572,7 +14180,7 @@ public final class ContextOuterClass {
              * @return Whether the topologyId field is set.
              */
             public boolean hasTopologyId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return topologyIdBuilder_ != null || topologyId_ != null;
             }
 
             /**
@@ -13596,11 +14204,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     topologyId_ = value;
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -13610,11 +14217,10 @@ public final class ContextOuterClass {
             public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                 if (topologyIdBuilder_ == null) {
                     topologyId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -13623,16 +14229,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                 if (topologyIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
-                        getTopologyIdBuilder().mergeFrom(value);
+                    if (topologyId_ != null) {
+                        topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
                     } else {
                         topologyId_ = value;
                     }
+                    onChanged();
                 } else {
                     topologyIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -13640,13 +14245,13 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 2;</code>
              */
             public Builder clearTopologyId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                    onChanged();
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -13654,7 +14259,6 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 2;</code>
              */
             public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getTopologyIdFieldBuilder().getBuilder();
             }
@@ -13708,17 +14312,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public TopologyEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new TopologyEvent(input, extensionRegistry);
             }
         };
 
@@ -13784,6 +14378,57 @@ public final class ContextOuterClass {
             return new DeviceId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (deviceUuid_ != null) {
+                                    subBuilder = deviceUuid_.toBuilder();
+                                }
+                                deviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceUuid_);
+                                    deviceUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
         }
@@ -13820,7 +14465,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
-            return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
+            return getDeviceUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -13841,7 +14486,7 @@ public final class ContextOuterClass {
             if (deviceUuid_ != null) {
                 output.writeMessage(1, getDeviceUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -13853,7 +14498,7 @@ public final class ContextOuterClass {
             if (deviceUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -13873,7 +14518,7 @@ public final class ContextOuterClass {
                 if (!getDeviceUuid().equals(other.getDeviceUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -13889,7 +14534,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICE_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -13987,19 +14632,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                deviceUuid_ = null;
-                if (deviceUuidBuilder_ != null) {
-                    deviceUuidBuilder_.dispose();
+                if (deviceUuidBuilder_ == null) {
+                    deviceUuid_ = null;
+                } else {
+                    deviceUuid_ = null;
                     deviceUuidBuilder_ = null;
                 }
                 return this;
@@ -14027,18 +14679,43 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceId buildPartial() {
                 context.ContextOuterClass.DeviceId result = new context.ContextOuterClass.DeviceId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (deviceUuidBuilder_ == null) {
+                    result.deviceUuid_ = deviceUuid_;
+                } else {
+                    result.deviceUuid_ = deviceUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.DeviceId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.deviceUuid_ = deviceUuidBuilder_ == null ? deviceUuid_ : deviceUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -14057,7 +14734,7 @@ public final class ContextOuterClass {
                 if (other.hasDeviceUuid()) {
                     mergeDeviceUuid(other.getDeviceUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -14069,47 +14746,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.DeviceId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getDeviceUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.DeviceId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid deviceUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> deviceUuidBuilder_;
@@ -14119,7 +14769,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceUuid field is set.
              */
             public boolean hasDeviceUuid() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return deviceUuidBuilder_ != null || deviceUuid_ != null;
             }
 
             /**
@@ -14143,11 +14793,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceUuid_ = value;
+                    onChanged();
                 } else {
                     deviceUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -14157,11 +14806,10 @@ public final class ContextOuterClass {
             public Builder setDeviceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (deviceUuidBuilder_ == null) {
                     deviceUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -14170,16 +14818,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceUuid(context.ContextOuterClass.Uuid value) {
                 if (deviceUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && deviceUuid_ != null && deviceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getDeviceUuidBuilder().mergeFrom(value);
+                    if (deviceUuid_ != null) {
+                        deviceUuid_ = context.ContextOuterClass.Uuid.newBuilder(deviceUuid_).mergeFrom(value).buildPartial();
                     } else {
                         deviceUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -14187,13 +14834,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid device_uuid = 1;</code>
              */
             public Builder clearDeviceUuid() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                deviceUuid_ = null;
-                if (deviceUuidBuilder_ != null) {
-                    deviceUuidBuilder_.dispose();
+                if (deviceUuidBuilder_ == null) {
+                    deviceUuid_ = null;
+                    onChanged();
+                } else {
+                    deviceUuid_ = null;
                     deviceUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -14201,7 +14848,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid device_uuid = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getDeviceUuidBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDeviceUuidFieldBuilder().getBuilder();
             }
@@ -14255,17 +14901,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceId(input, extensionRegistry);
             }
         };
 
@@ -14517,6 +15153,154 @@ public final class ContextOuterClass {
             return new Device();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Device(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+                                if (deviceId_ != null) {
+                                    subBuilder = deviceId_.toBuilder();
+                                }
+                                deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceId_);
+                                    deviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                deviceType_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
+                                if (deviceConfig_ != null) {
+                                    subBuilder = deviceConfig_.toBuilder();
+                                }
+                                deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceConfig_);
+                                    deviceConfig_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 40:
+                            {
+                                int rawValue = input.readEnum();
+                                deviceOperationalStatus_ = rawValue;
+                                break;
+                            }
+                        case 48:
+                            {
+                                int rawValue = input.readEnum();
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                deviceDrivers_.add(rawValue);
+                                break;
+                            }
+                        case 50:
+                            {
+                                int length = input.readRawVarint32();
+                                int oldLimit = input.pushLimit(length);
+                                while (input.getBytesUntilLimit() > 0) {
+                                    int rawValue = input.readEnum();
+                                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                        deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>();
+                                        mutable_bitField0_ |= 0x00000001;
+                                    }
+                                    deviceDrivers_.add(rawValue);
+                                }
+                                input.popLimit(oldLimit);
+                                break;
+                            }
+                        case 58:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                deviceEndpoints_.add(input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 66:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
+                                    components_ = new java.util.ArrayList<context.ContextOuterClass.Component>();
+                                    mutable_bitField0_ |= 0x00000004;
+                                }
+                                components_.add(input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 74:
+                            {
+                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+                                if (controllerId_ != null) {
+                                    subBuilder = controllerId_.toBuilder();
+                                }
+                                controllerId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(controllerId_);
+                                    controllerId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
+                }
+                if (((mutable_bitField0_ & 0x00000004) != 0)) {
+                    components_ = java.util.Collections.unmodifiableList(components_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Device_descriptor;
         }
@@ -14553,13 +15337,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+            return getDeviceId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -14596,8 +15379,7 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_TYPE_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object deviceType_ = "";
+        private volatile java.lang.Object deviceType_;
 
         /**
          * <code>string device_type = 3;</code>
@@ -14659,12 +15441,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
-            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
+            return getDeviceConfig();
         }
 
         public static final int DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER = 5;
 
-        private int deviceOperationalStatus_ = 0;
+        private int deviceOperationalStatus_;
 
         /**
          * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
@@ -14681,19 +15463,20 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
-            context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.forNumber(deviceOperationalStatus_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_);
             return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
         }
 
         public static final int DEVICE_DRIVERS_FIELD_NUMBER = 6;
 
-        @SuppressWarnings("serial")
         private java.util.List<java.lang.Integer> deviceDrivers_;
 
         private static final com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum> deviceDrivers_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>() {
 
             public context.ContextOuterClass.DeviceDriverEnum convert(java.lang.Integer from) {
-                context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.forNumber(from);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.valueOf(from);
                 return result == null ? context.ContextOuterClass.DeviceDriverEnum.UNRECOGNIZED : result;
             }
         };
@@ -14749,7 +15532,6 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_ENDPOINTS_FIELD_NUMBER = 7;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_;
 
         /**
@@ -14794,7 +15576,6 @@ public final class ContextOuterClass {
 
         public static final int COMPONENTS_FIELD_NUMBER = 8;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Component> components_;
 
         /**
@@ -14896,7 +15677,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getControllerIdOrBuilder() {
-            return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_;
+            return getControllerId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -14918,10 +15699,10 @@ public final class ContextOuterClass {
             if (deviceId_ != null) {
                 output.writeMessage(1, getDeviceId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceType_)) {
+            if (!getDeviceTypeBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, deviceType_);
             }
             if (deviceConfig_ != null) {
@@ -14946,7 +15727,7 @@ public final class ContextOuterClass {
             if (controllerId_ != null) {
                 output.writeMessage(9, getControllerId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -14958,10 +15739,10 @@ public final class ContextOuterClass {
             if (deviceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceType_)) {
+            if (!getDeviceTypeBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, deviceType_);
             }
             if (deviceConfig_ != null) {
@@ -14991,7 +15772,7 @@ public final class ContextOuterClass {
             if (controllerId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getControllerId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -15035,7 +15816,7 @@ public final class ContextOuterClass {
                 if (!getControllerId().equals(other.getControllerId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -15077,7 +15858,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONTROLLER_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getControllerId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -15171,48 +15952,57 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Device.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDeviceEndpointsFieldBuilder();
+                    getComponentsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
                 name_ = "";
                 deviceType_ = "";
-                deviceConfig_ = null;
-                if (deviceConfigBuilder_ != null) {
-                    deviceConfigBuilder_.dispose();
+                if (deviceConfigBuilder_ == null) {
+                    deviceConfig_ = null;
+                } else {
+                    deviceConfig_ = null;
                     deviceConfigBuilder_ = null;
                 }
                 deviceOperationalStatus_ = 0;
                 deviceDrivers_ = java.util.Collections.emptyList();
-                bitField0_ = (bitField0_ & ~0x00000020);
+                bitField0_ = (bitField0_ & ~0x00000001);
                 if (deviceEndpointsBuilder_ == null) {
                     deviceEndpoints_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    deviceEndpoints_ = null;
                     deviceEndpointsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000040);
                 if (componentsBuilder_ == null) {
                     components_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
                 } else {
-                    components_ = null;
                     componentsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000080);
-                controllerId_ = null;
-                if (controllerIdBuilder_ != null) {
-                    controllerIdBuilder_.dispose();
+                if (controllerIdBuilder_ == null) {
+                    controllerId_ = null;
+                } else {
+                    controllerId_ = null;
                     controllerIdBuilder_ = null;
                 }
                 return this;
@@ -15240,60 +16030,80 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Device buildPartial() {
                 context.ContextOuterClass.Device result = new context.ContextOuterClass.Device(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (deviceIdBuilder_ == null) {
+                    result.deviceId_ = deviceId_;
+                } else {
+                    result.deviceId_ = deviceIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Device result) {
-                if (((bitField0_ & 0x00000020) != 0)) {
+                result.name_ = name_;
+                result.deviceType_ = deviceType_;
+                if (deviceConfigBuilder_ == null) {
+                    result.deviceConfig_ = deviceConfig_;
+                } else {
+                    result.deviceConfig_ = deviceConfigBuilder_.build();
+                }
+                result.deviceOperationalStatus_ = deviceOperationalStatus_;
+                if (((bitField0_ & 0x00000001) != 0)) {
                     deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
-                    bitField0_ = (bitField0_ & ~0x00000020);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 }
                 result.deviceDrivers_ = deviceDrivers_;
                 if (deviceEndpointsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000040) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
-                        bitField0_ = (bitField0_ & ~0x00000040);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.deviceEndpoints_ = deviceEndpoints_;
                 } else {
                     result.deviceEndpoints_ = deviceEndpointsBuilder_.build();
                 }
                 if (componentsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000080) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         components_ = java.util.Collections.unmodifiableList(components_);
-                        bitField0_ = (bitField0_ & ~0x00000080);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.components_ = components_;
                 } else {
                     result.components_ = componentsBuilder_.build();
                 }
+                if (controllerIdBuilder_ == null) {
+                    result.controllerId_ = controllerId_;
+                } else {
+                    result.controllerId_ = controllerIdBuilder_.build();
+                }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Device result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.deviceType_ = deviceType_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.deviceConfig_ = deviceConfigBuilder_ == null ? deviceConfig_ : deviceConfigBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.deviceOperationalStatus_ = deviceOperationalStatus_;
-                }
-                if (((from_bitField0_ & 0x00000100) != 0)) {
-                    result.controllerId_ = controllerIdBuilder_ == null ? controllerId_ : controllerIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -15314,12 +16124,10 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getDeviceType().isEmpty()) {
                     deviceType_ = other.deviceType_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (other.hasDeviceConfig()) {
@@ -15331,7 +16139,7 @@ public final class ContextOuterClass {
                 if (!other.deviceDrivers_.isEmpty()) {
                     if (deviceDrivers_.isEmpty()) {
                         deviceDrivers_ = other.deviceDrivers_;
-                        bitField0_ = (bitField0_ & ~0x00000020);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     } else {
                         ensureDeviceDriversIsMutable();
                         deviceDrivers_.addAll(other.deviceDrivers_);
@@ -15342,7 +16150,7 @@ public final class ContextOuterClass {
                     if (!other.deviceEndpoints_.isEmpty()) {
                         if (deviceEndpoints_.isEmpty()) {
                             deviceEndpoints_ = other.deviceEndpoints_;
-                            bitField0_ = (bitField0_ & ~0x00000040);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureDeviceEndpointsIsMutable();
                             deviceEndpoints_.addAll(other.deviceEndpoints_);
@@ -15355,7 +16163,7 @@ public final class ContextOuterClass {
                             deviceEndpointsBuilder_.dispose();
                             deviceEndpointsBuilder_ = null;
                             deviceEndpoints_ = other.deviceEndpoints_;
-                            bitField0_ = (bitField0_ & ~0x00000040);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             deviceEndpointsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceEndpointsFieldBuilder() : null;
                         } else {
                             deviceEndpointsBuilder_.addAllMessages(other.deviceEndpoints_);
@@ -15366,7 +16174,7 @@ public final class ContextOuterClass {
                     if (!other.components_.isEmpty()) {
                         if (components_.isEmpty()) {
                             components_ = other.components_;
-                            bitField0_ = (bitField0_ & ~0x00000080);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureComponentsIsMutable();
                             components_.addAll(other.components_);
@@ -15379,7 +16187,7 @@ public final class ContextOuterClass {
                             componentsBuilder_.dispose();
                             componentsBuilder_ = null;
                             components_ = other.components_;
-                            bitField0_ = (bitField0_ & ~0x00000080);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             componentsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getComponentsFieldBuilder() : null;
                         } else {
                             componentsBuilder_.addAllMessages(other.components_);
@@ -15389,7 +16197,7 @@ public final class ContextOuterClass {
                 if (other.hasControllerId()) {
                     mergeControllerId(other.getControllerId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -15401,122 +16209,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Device parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    deviceType_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    input.readMessage(getDeviceConfigFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            case 40:
-                                {
-                                    deviceOperationalStatus_ = input.readEnum();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 40
-                            case 48:
-                                {
-                                    int tmpRaw = input.readEnum();
-                                    ensureDeviceDriversIsMutable();
-                                    deviceDrivers_.add(tmpRaw);
-                                    break;
-                                }
-                            // case 48
-                            case 50:
-                                {
-                                    int length = input.readRawVarint32();
-                                    int oldLimit = input.pushLimit(length);
-                                    while (input.getBytesUntilLimit() > 0) {
-                                        int tmpRaw = input.readEnum();
-                                        ensureDeviceDriversIsMutable();
-                                        deviceDrivers_.add(tmpRaw);
-                                    }
-                                    input.popLimit(oldLimit);
-                                    break;
-                                }
-                            // case 50
-                            case 58:
-                                {
-                                    context.ContextOuterClass.EndPoint m = input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry);
-                                    if (deviceEndpointsBuilder_ == null) {
-                                        ensureDeviceEndpointsIsMutable();
-                                        deviceEndpoints_.add(m);
-                                    } else {
-                                        deviceEndpointsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 58
-                            case 66:
-                                {
-                                    context.ContextOuterClass.Component m = input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry);
-                                    if (componentsBuilder_ == null) {
-                                        ensureComponentsIsMutable();
-                                        components_.add(m);
-                                    } else {
-                                        componentsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 66
-                            case 74:
-                                {
-                                    input.readMessage(getControllerIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000100;
-                                    break;
-                                }
-                            // case 74
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Device) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -15531,7 +16234,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceId field is set.
              */
             public boolean hasDeviceId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return deviceIdBuilder_ != null || deviceId_ != null;
             }
 
             /**
@@ -15555,11 +16258,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceId_ = value;
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -15569,11 +16271,10 @@ public final class ContextOuterClass {
             public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (deviceIdBuilder_ == null) {
                     deviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -15582,16 +16283,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                 if (deviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
-                        getDeviceIdBuilder().mergeFrom(value);
+                    if (deviceId_ != null) {
+                        deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
                     } else {
                         deviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -15599,13 +16299,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId device_id = 1;</code>
              */
             public Builder clearDeviceId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                    onChanged();
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -15613,7 +16313,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId device_id = 1;</code>
              */
             public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDeviceIdFieldBuilder().getBuilder();
             }
@@ -15683,7 +16382,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -15694,7 +16392,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -15710,7 +16407,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -15758,7 +16454,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 deviceType_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -15769,7 +16464,6 @@ public final class ContextOuterClass {
              */
             public Builder clearDeviceType() {
                 deviceType_ = getDefaultInstance().getDeviceType();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -15785,7 +16479,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 deviceType_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -15799,7 +16492,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceConfig field is set.
              */
             public boolean hasDeviceConfig() {
-                return ((bitField0_ & 0x00000008) != 0);
+                return deviceConfigBuilder_ != null || deviceConfig_ != null;
             }
 
             /**
@@ -15823,11 +16516,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceConfig_ = value;
+                    onChanged();
                 } else {
                     deviceConfigBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -15837,11 +16529,10 @@ public final class ContextOuterClass {
             public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
                 if (deviceConfigBuilder_ == null) {
                     deviceConfig_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceConfigBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -15850,16 +16541,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
                 if (deviceConfigBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0) && deviceConfig_ != null && deviceConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) {
-                        getDeviceConfigBuilder().mergeFrom(value);
+                    if (deviceConfig_ != null) {
+                        deviceConfig_ = context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
                     } else {
                         deviceConfig_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceConfigBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -15867,13 +16557,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceConfig device_config = 4;</code>
              */
             public Builder clearDeviceConfig() {
-                bitField0_ = (bitField0_ & ~0x00000008);
-                deviceConfig_ = null;
-                if (deviceConfigBuilder_ != null) {
-                    deviceConfigBuilder_.dispose();
+                if (deviceConfigBuilder_ == null) {
+                    deviceConfig_ = null;
+                    onChanged();
+                } else {
+                    deviceConfig_ = null;
                     deviceConfigBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -15881,7 +16571,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceConfig device_config = 4;</code>
              */
             public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return getDeviceConfigFieldBuilder().getBuilder();
             }
@@ -15926,7 +16615,6 @@ public final class ContextOuterClass {
              */
             public Builder setDeviceOperationalStatusValue(int value) {
                 deviceOperationalStatus_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -15937,7 +16625,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
-                context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.forNumber(deviceOperationalStatus_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_);
                 return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
             }
 
@@ -15950,7 +16639,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000010;
                 deviceOperationalStatus_ = value.getNumber();
                 onChanged();
                 return this;
@@ -15961,7 +16649,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDeviceOperationalStatus() {
-                bitField0_ = (bitField0_ & ~0x00000010);
                 deviceOperationalStatus_ = 0;
                 onChanged();
                 return this;
@@ -15970,9 +16657,9 @@ public final class ContextOuterClass {
             private java.util.List<java.lang.Integer> deviceDrivers_ = java.util.Collections.emptyList();
 
             private void ensureDeviceDriversIsMutable() {
-                if (!((bitField0_ & 0x00000020) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>(deviceDrivers_);
-                    bitField0_ |= 0x00000020;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -16052,7 +16739,7 @@ public final class ContextOuterClass {
              */
             public Builder clearDeviceDrivers() {
                 deviceDrivers_ = java.util.Collections.emptyList();
-                bitField0_ = (bitField0_ & ~0x00000020);
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -16076,8 +16763,8 @@ public final class ContextOuterClass {
 
             /**
              * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-             * @param index The index to set the value at.
-             * @param value The enum numeric value on the wire for deviceDrivers to set.
+             * @param index The index of the value to return.
+             * @return The enum numeric value on the wire of deviceDrivers at the given index.
              * @return This builder for chaining.
              */
             public Builder setDeviceDriversValue(int index, int value) {
@@ -16116,9 +16803,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_ = java.util.Collections.emptyList();
 
             private void ensureDeviceEndpointsIsMutable() {
-                if (!((bitField0_ & 0x00000040) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>(deviceEndpoints_);
-                    bitField0_ |= 0x00000040;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -16270,7 +16957,7 @@ public final class ContextOuterClass {
             public Builder clearDeviceEndpoints() {
                 if (deviceEndpointsBuilder_ == null) {
                     deviceEndpoints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000040);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     deviceEndpointsBuilder_.clear();
@@ -16344,7 +17031,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder> getDeviceEndpointsFieldBuilder() {
                 if (deviceEndpointsBuilder_ == null) {
-                    deviceEndpointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder>(deviceEndpoints_, ((bitField0_ & 0x00000040) != 0), getParentForChildren(), isClean());
+                    deviceEndpointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder>(deviceEndpoints_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     deviceEndpoints_ = null;
                 }
                 return deviceEndpointsBuilder_;
@@ -16353,9 +17040,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.Component> components_ = java.util.Collections.emptyList();
 
             private void ensureComponentsIsMutable() {
-                if (!((bitField0_ & 0x00000080) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     components_ = new java.util.ArrayList<context.ContextOuterClass.Component>(components_);
-                    bitField0_ |= 0x00000080;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -16551,7 +17238,7 @@ public final class ContextOuterClass {
             public Builder clearComponents() {
                 if (componentsBuilder_ == null) {
                     components_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000080);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     componentsBuilder_.clear();
@@ -16653,7 +17340,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> getComponentsFieldBuilder() {
                 if (componentsBuilder_ == null) {
-                    componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder>(components_, ((bitField0_ & 0x00000080) != 0), getParentForChildren(), isClean());
+                    componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder>(components_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     components_ = null;
                 }
                 return componentsBuilder_;
@@ -16672,7 +17359,7 @@ public final class ContextOuterClass {
              * @return Whether the controllerId field is set.
              */
             public boolean hasControllerId() {
-                return ((bitField0_ & 0x00000100) != 0);
+                return controllerIdBuilder_ != null || controllerId_ != null;
             }
 
             /**
@@ -16704,11 +17391,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     controllerId_ = value;
+                    onChanged();
                 } else {
                     controllerIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -16722,11 +17408,10 @@ public final class ContextOuterClass {
             public Builder setControllerId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (controllerIdBuilder_ == null) {
                     controllerId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     controllerIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -16739,16 +17424,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeControllerId(context.ContextOuterClass.DeviceId value) {
                 if (controllerIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000100) != 0) && controllerId_ != null && controllerId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
-                        getControllerIdBuilder().mergeFrom(value);
+                    if (controllerId_ != null) {
+                        controllerId_ = context.ContextOuterClass.DeviceId.newBuilder(controllerId_).mergeFrom(value).buildPartial();
                     } else {
                         controllerId_ = value;
                     }
+                    onChanged();
                 } else {
                     controllerIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -16760,13 +17444,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId controller_id = 9;</code>
              */
             public Builder clearControllerId() {
-                bitField0_ = (bitField0_ & ~0x00000100);
-                controllerId_ = null;
-                if (controllerIdBuilder_ != null) {
-                    controllerIdBuilder_.dispose();
+                if (controllerIdBuilder_ == null) {
+                    controllerId_ = null;
+                    onChanged();
+                } else {
+                    controllerId_ = null;
                     controllerIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -16778,7 +17462,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId controller_id = 9;</code>
              */
             public context.ContextOuterClass.DeviceId.Builder getControllerIdBuilder() {
-                bitField0_ |= 0x00000100;
                 onChanged();
                 return getControllerIdFieldBuilder().getBuilder();
             }
@@ -16840,17 +17523,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Device parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Device(input, extensionRegistry);
             }
         };
 
@@ -16953,9 +17626,7 @@ public final class ContextOuterClass {
          *
          * <code>map&lt;string, string&gt; attributes = 4;</code>
          */
-        /* nullable */
-        java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
-        java.lang.String defaultValue);
+        java.lang.String getAttributesOrDefault(java.lang.String key, java.lang.String defaultValue);
 
         /**
          * <pre>
@@ -17008,6 +17679,86 @@ public final class ContextOuterClass {
             return new Component();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Component(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (componentUuid_ != null) {
+                                    subBuilder = componentUuid_.toBuilder();
+                                }
+                                componentUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(componentUuid_);
+                                    componentUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                type_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    attributes_ = com.google.protobuf.MapField.newMapField(AttributesDefaultEntryHolder.defaultEntry);
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                com.google.protobuf.MapEntry<java.lang.String, java.lang.String> attributes__ = input.readMessage(AttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
+                                attributes_.getMutableMap().put(attributes__.getKey(), attributes__.getValue());
+                                break;
+                            }
+                        case 42:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                parent_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Component_descriptor;
         }
@@ -17055,13 +17806,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder() {
-            return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
+            return getComponentUuid();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -17098,8 +17848,7 @@ public final class ContextOuterClass {
 
         public static final int TYPE_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object type_ = "";
+        private volatile java.lang.Object type_;
 
         /**
          * <code>string type = 3;</code>
@@ -17141,7 +17890,6 @@ public final class ContextOuterClass {
             static final com.google.protobuf.MapEntry<java.lang.String, java.lang.String> defaultEntry = com.google.protobuf.MapEntry.<java.lang.String, java.lang.String>newDefaultInstance(context.ContextOuterClass.internal_static_context_Component_AttributesEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.STRING, "");
         }
 
-        @SuppressWarnings("serial")
         private com.google.protobuf.MapField<java.lang.String, java.lang.String> attributes_;
 
         private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetAttributes() {
@@ -17165,7 +17913,7 @@ public final class ContextOuterClass {
         @java.lang.Override
         public boolean containsAttributes(java.lang.String key) {
             if (key == null) {
-                throw new NullPointerException("map key");
+                throw new java.lang.NullPointerException();
             }
             return internalGetAttributes().getMap().containsKey(key);
         }
@@ -17199,11 +17947,9 @@ public final class ContextOuterClass {
          * <code>map&lt;string, string&gt; attributes = 4;</code>
          */
         @java.lang.Override
-        public /* nullable */
-        java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
-        java.lang.String defaultValue) {
+        public java.lang.String getAttributesOrDefault(java.lang.String key, java.lang.String defaultValue) {
             if (key == null) {
-                throw new NullPointerException("map key");
+                throw new java.lang.NullPointerException();
             }
             java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
             return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -17219,7 +17965,7 @@ public final class ContextOuterClass {
         @java.lang.Override
         public java.lang.String getAttributesOrThrow(java.lang.String key) {
             if (key == null) {
-                throw new NullPointerException("map key");
+                throw new java.lang.NullPointerException();
             }
             java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
             if (!map.containsKey(key)) {
@@ -17230,8 +17976,7 @@ public final class ContextOuterClass {
 
         public static final int PARENT_FIELD_NUMBER = 5;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object parent_ = "";
+        private volatile java.lang.Object parent_;
 
         /**
          * <code>string parent = 5;</code>
@@ -17284,17 +18029,17 @@ public final class ContextOuterClass {
             if (componentUuid_ != null) {
                 output.writeMessage(1, getComponentUuid());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
+            if (!getTypeBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, type_);
             }
             com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetAttributes(), AttributesDefaultEntryHolder.defaultEntry, 4);
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
+            if (!getParentBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 5, parent_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -17306,20 +18051,20 @@ public final class ContextOuterClass {
             if (componentUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getComponentUuid());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
+            if (!getTypeBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, type_);
             }
             for (java.util.Map.Entry<java.lang.String, java.lang.String> entry : internalGetAttributes().getMap().entrySet()) {
                 com.google.protobuf.MapEntry<java.lang.String, java.lang.String> attributes__ = AttributesDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build();
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, attributes__);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
+            if (!getParentBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, parent_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -17347,7 +18092,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getParent().equals(other.getParent()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -17373,7 +18118,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + PARENT_FIELD_NUMBER;
             hash = (53 * hash) + getParent().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -17491,19 +18236,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Component.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                componentUuid_ = null;
-                if (componentUuidBuilder_ != null) {
-                    componentUuidBuilder_.dispose();
+                if (componentUuidBuilder_ == null) {
+                    componentUuid_ = null;
+                } else {
+                    componentUuid_ = null;
                     componentUuidBuilder_ = null;
                 }
                 name_ = "";
@@ -17535,31 +18287,49 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Component buildPartial() {
                 context.ContextOuterClass.Component result = new context.ContextOuterClass.Component(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (componentUuidBuilder_ == null) {
+                    result.componentUuid_ = componentUuid_;
+                } else {
+                    result.componentUuid_ = componentUuidBuilder_.build();
                 }
+                result.name_ = name_;
+                result.type_ = type_;
+                result.attributes_ = internalGetAttributes();
+                result.attributes_.makeImmutable();
+                result.parent_ = parent_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Component result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.componentUuid_ = componentUuidBuilder_ == null ? componentUuid_ : componentUuidBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.type_ = type_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.attributes_ = internalGetAttributes();
-                    result.attributes_.makeImmutable();
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.parent_ = parent_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -17580,22 +18350,18 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getType().isEmpty()) {
                     type_ = other.type_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 internalGetMutableAttributes().mergeFrom(other.internalGetAttributes());
-                bitField0_ |= 0x00000008;
                 if (!other.getParent().isEmpty()) {
                     parent_ = other.parent_;
-                    bitField0_ |= 0x00000010;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -17607,71 +18373,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Component parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getComponentUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    type_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    com.google.protobuf.MapEntry<java.lang.String, java.lang.String> attributes__ = input.readMessage(AttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
-                                    internalGetMutableAttributes().getMutableMap().put(attributes__.getKey(), attributes__.getValue());
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    parent_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Component) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -17686,7 +18398,7 @@ public final class ContextOuterClass {
              * @return Whether the componentUuid field is set.
              */
             public boolean hasComponentUuid() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return componentUuidBuilder_ != null || componentUuid_ != null;
             }
 
             /**
@@ -17710,11 +18422,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     componentUuid_ = value;
+                    onChanged();
                 } else {
                     componentUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17724,11 +18435,10 @@ public final class ContextOuterClass {
             public Builder setComponentUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (componentUuidBuilder_ == null) {
                     componentUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     componentUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17737,16 +18447,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeComponentUuid(context.ContextOuterClass.Uuid value) {
                 if (componentUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && componentUuid_ != null && componentUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getComponentUuidBuilder().mergeFrom(value);
+                    if (componentUuid_ != null) {
+                        componentUuid_ = context.ContextOuterClass.Uuid.newBuilder(componentUuid_).mergeFrom(value).buildPartial();
                     } else {
                         componentUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     componentUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17754,13 +18463,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid component_uuid = 1;</code>
              */
             public Builder clearComponentUuid() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                componentUuid_ = null;
-                if (componentUuidBuilder_ != null) {
-                    componentUuidBuilder_.dispose();
+                if (componentUuidBuilder_ == null) {
+                    componentUuid_ = null;
+                    onChanged();
+                } else {
+                    componentUuid_ = null;
                     componentUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -17768,7 +18477,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid component_uuid = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getComponentUuidBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getComponentUuidFieldBuilder().getBuilder();
             }
@@ -17838,7 +18546,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -17849,7 +18556,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -17865,7 +18571,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -17913,7 +18618,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 type_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -17924,7 +18628,6 @@ public final class ContextOuterClass {
              */
             public Builder clearType() {
                 type_ = getDefaultInstance().getType();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -17940,7 +18643,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 type_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -17955,14 +18657,14 @@ public final class ContextOuterClass {
             }
 
             private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetMutableAttributes() {
+                onChanged();
+                ;
                 if (attributes_ == null) {
                     attributes_ = com.google.protobuf.MapField.newMapField(AttributesDefaultEntryHolder.defaultEntry);
                 }
                 if (!attributes_.isMutable()) {
                     attributes_ = attributes_.copy();
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return attributes_;
             }
 
@@ -17980,7 +18682,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public boolean containsAttributes(java.lang.String key) {
                 if (key == null) {
-                    throw new NullPointerException("map key");
+                    throw new java.lang.NullPointerException();
                 }
                 return internalGetAttributes().getMap().containsKey(key);
             }
@@ -18014,11 +18716,9 @@ public final class ContextOuterClass {
              * <code>map&lt;string, string&gt; attributes = 4;</code>
              */
             @java.lang.Override
-            public /* nullable */
-            java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
-            java.lang.String defaultValue) {
+            public java.lang.String getAttributesOrDefault(java.lang.String key, java.lang.String defaultValue) {
                 if (key == null) {
-                    throw new NullPointerException("map key");
+                    throw new java.lang.NullPointerException();
                 }
                 java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
                 return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -18034,7 +18734,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public java.lang.String getAttributesOrThrow(java.lang.String key) {
                 if (key == null) {
-                    throw new NullPointerException("map key");
+                    throw new java.lang.NullPointerException();
                 }
                 java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
                 if (!map.containsKey(key)) {
@@ -18044,7 +18744,6 @@ public final class ContextOuterClass {
             }
 
             public Builder clearAttributes() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 internalGetMutableAttributes().getMutableMap().clear();
                 return this;
             }
@@ -18058,7 +18757,7 @@ public final class ContextOuterClass {
              */
             public Builder removeAttributes(java.lang.String key) {
                 if (key == null) {
-                    throw new NullPointerException("map key");
+                    throw new java.lang.NullPointerException();
                 }
                 internalGetMutableAttributes().getMutableMap().remove(key);
                 return this;
@@ -18069,7 +18768,6 @@ public final class ContextOuterClass {
              */
             @java.lang.Deprecated
             public java.util.Map<java.lang.String, java.lang.String> getMutableAttributes() {
-                bitField0_ |= 0x00000008;
                 return internalGetMutableAttributes().getMutableMap();
             }
 
@@ -18082,13 +18780,12 @@ public final class ContextOuterClass {
              */
             public Builder putAttributes(java.lang.String key, java.lang.String value) {
                 if (key == null) {
-                    throw new NullPointerException("map key");
+                    throw new java.lang.NullPointerException();
                 }
                 if (value == null) {
-                    throw new NullPointerException("map value");
+                    throw new java.lang.NullPointerException();
                 }
                 internalGetMutableAttributes().getMutableMap().put(key, value);
-                bitField0_ |= 0x00000008;
                 return this;
             }
 
@@ -18101,7 +18798,6 @@ public final class ContextOuterClass {
              */
             public Builder putAllAttributes(java.util.Map<java.lang.String, java.lang.String> values) {
                 internalGetMutableAttributes().getMutableMap().putAll(values);
-                bitField0_ |= 0x00000008;
                 return this;
             }
 
@@ -18148,7 +18844,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 parent_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -18159,7 +18854,6 @@ public final class ContextOuterClass {
              */
             public Builder clearParent() {
                 parent_ = getDefaultInstance().getParent();
-                bitField0_ = (bitField0_ & ~0x00000010);
                 onChanged();
                 return this;
             }
@@ -18175,7 +18869,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 parent_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -18207,17 +18900,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Component parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Component(input, extensionRegistry);
             }
         };
 
@@ -18288,6 +18971,57 @@ public final class ContextOuterClass {
             return new DeviceConfig();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                configRules_.add(input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    configRules_ = java.util.Collections.unmodifiableList(configRules_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
         }
@@ -18299,7 +19033,6 @@ public final class ContextOuterClass {
 
         public static final int CONFIG_RULES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
 
         /**
@@ -18360,7 +19093,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 output.writeMessage(1, configRules_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -18372,7 +19105,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -18388,7 +19121,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.DeviceConfig other = (context.ContextOuterClass.DeviceConfig) obj;
             if (!getConfigRulesList().equals(other.getConfigRulesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -18404,7 +19137,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                 hash = (53 * hash) + getConfigRulesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -18498,23 +19231,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceConfig.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getConfigRulesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (configRulesBuilder_ == null) {
                     configRules_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    configRules_ = null;
                     configRulesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -18540,15 +19279,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceConfig buildPartial() {
                 context.ContextOuterClass.DeviceConfig result = new context.ContextOuterClass.DeviceConfig(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceConfig result) {
+                int from_bitField0_ = bitField0_;
                 if (configRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         configRules_ = java.util.Collections.unmodifiableList(configRules_);
@@ -18558,10 +19289,38 @@ public final class ContextOuterClass {
                 } else {
                     result.configRules_ = configRulesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.DeviceConfig result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -18601,7 +19360,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -18613,47 +19372,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.DeviceConfig parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
-                                    if (configRulesBuilder_ == null) {
-                                        ensureConfigRulesIsMutable();
-                                        configRules_.add(m);
-                                    } else {
-                                        configRulesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.DeviceConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -18923,17 +19652,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceConfig(input, extensionRegistry);
             }
         };
 
@@ -19004,6 +19723,57 @@ public final class ContextOuterClass {
             return new DeviceIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                deviceIds_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
         }
@@ -19015,7 +19785,6 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
 
         /**
@@ -19076,7 +19845,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < deviceIds_.size(); i++) {
                 output.writeMessage(1, deviceIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -19088,7 +19857,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < deviceIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, deviceIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -19104,7 +19873,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.DeviceIdList other = (context.ContextOuterClass.DeviceIdList) obj;
             if (!getDeviceIdsList().equals(other.getDeviceIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -19120,7 +19889,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -19214,23 +19983,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDeviceIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    deviceIds_ = null;
                     deviceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -19256,15 +20031,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceIdList buildPartial() {
                 context.ContextOuterClass.DeviceIdList result = new context.ContextOuterClass.DeviceIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (deviceIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
@@ -19274,10 +20041,38 @@ public final class ContextOuterClass {
                 } else {
                     result.deviceIds_ = deviceIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.DeviceIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -19317,7 +20112,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -19329,47 +20124,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.DeviceIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-                                    if (deviceIdsBuilder_ == null) {
-                                        ensureDeviceIdsIsMutable();
-                                        deviceIds_.add(m);
-                                    } else {
-                                        deviceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.DeviceIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -19639,17 +20404,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceIdList(input, extensionRegistry);
             }
         };
 
@@ -19720,6 +20475,57 @@ public final class ContextOuterClass {
             return new DeviceList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                devices_.add(input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    devices_ = java.util.Collections.unmodifiableList(devices_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
         }
@@ -19731,7 +20537,6 @@ public final class ContextOuterClass {
 
         public static final int DEVICES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Device> devices_;
 
         /**
@@ -19792,7 +20597,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < devices_.size(); i++) {
                 output.writeMessage(1, devices_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -19804,7 +20609,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < devices_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, devices_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -19820,7 +20625,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.DeviceList other = (context.ContextOuterClass.DeviceList) obj;
             if (!getDevicesList().equals(other.getDevicesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -19836,7 +20641,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICES_FIELD_NUMBER;
                 hash = (53 * hash) + getDevicesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -19930,23 +20735,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDevicesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (devicesBuilder_ == null) {
                     devices_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    devices_ = null;
                     devicesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -19972,15 +20783,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceList buildPartial() {
                 context.ContextOuterClass.DeviceList result = new context.ContextOuterClass.DeviceList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceList result) {
+                int from_bitField0_ = bitField0_;
                 if (devicesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         devices_ = java.util.Collections.unmodifiableList(devices_);
@@ -19990,10 +20793,38 @@ public final class ContextOuterClass {
                 } else {
                     result.devices_ = devicesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.DeviceList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -20033,7 +20864,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -20045,47 +20876,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.DeviceList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Device m = input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry);
-                                    if (devicesBuilder_ == null) {
-                                        ensureDevicesIsMutable();
-                                        devices_.add(m);
-                                    } else {
-                                        devicesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.DeviceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -20355,17 +21156,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceList(input, extensionRegistry);
             }
         };
 
@@ -20445,6 +21236,72 @@ public final class ContextOuterClass {
             return new DeviceFilter();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceFilter(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.DeviceIdList.Builder subBuilder = null;
+                                if (deviceIds_ != null) {
+                                    subBuilder = deviceIds_.toBuilder();
+                                }
+                                deviceIds_ = input.readMessage(context.ContextOuterClass.DeviceIdList.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceIds_);
+                                    deviceIds_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                includeEndpoints_ = input.readBool();
+                                break;
+                            }
+                        case 24:
+                            {
+                                includeConfigRules_ = input.readBool();
+                                break;
+                            }
+                        case 32:
+                            {
+                                includeComponents_ = input.readBool();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceFilter_descriptor;
         }
@@ -20481,12 +21338,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdListOrBuilder getDeviceIdsOrBuilder() {
-            return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
+            return getDeviceIds();
         }
 
         public static final int INCLUDE_ENDPOINTS_FIELD_NUMBER = 2;
 
-        private boolean includeEndpoints_ = false;
+        private boolean includeEndpoints_;
 
         /**
          * <code>bool include_endpoints = 2;</code>
@@ -20499,7 +21356,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 3;
 
-        private boolean includeConfigRules_ = false;
+        private boolean includeConfigRules_;
 
         /**
          * <code>bool include_config_rules = 3;</code>
@@ -20512,7 +21369,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_COMPONENTS_FIELD_NUMBER = 4;
 
-        private boolean includeComponents_ = false;
+        private boolean includeComponents_;
 
         /**
          * <code>bool include_components = 4;</code>
@@ -20550,7 +21407,7 @@ public final class ContextOuterClass {
             if (includeComponents_ != false) {
                 output.writeBool(4, includeComponents_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -20571,7 +21428,7 @@ public final class ContextOuterClass {
             if (includeComponents_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeComponents_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -20597,7 +21454,7 @@ public final class ContextOuterClass {
                 return false;
             if (getIncludeComponents() != other.getIncludeComponents())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -20619,7 +21476,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
             hash = (37 * hash) + INCLUDE_COMPONENTS_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeComponents());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -20713,19 +21570,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceFilter.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                deviceIds_ = null;
-                if (deviceIdsBuilder_ != null) {
-                    deviceIdsBuilder_.dispose();
+                if (deviceIdsBuilder_ == null) {
+                    deviceIds_ = null;
+                } else {
+                    deviceIds_ = null;
                     deviceIdsBuilder_ = null;
                 }
                 includeEndpoints_ = false;
@@ -20756,27 +21620,46 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceFilter buildPartial() {
                 context.ContextOuterClass.DeviceFilter result = new context.ContextOuterClass.DeviceFilter(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (deviceIdsBuilder_ == null) {
+                    result.deviceIds_ = deviceIds_;
+                } else {
+                    result.deviceIds_ = deviceIdsBuilder_.build();
                 }
+                result.includeEndpoints_ = includeEndpoints_;
+                result.includeConfigRules_ = includeConfigRules_;
+                result.includeComponents_ = includeComponents_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.DeviceFilter result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.deviceIds_ = deviceIdsBuilder_ == null ? deviceIds_ : deviceIdsBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.includeEndpoints_ = includeEndpoints_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.includeConfigRules_ = includeConfigRules_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.includeComponents_ = includeComponents_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -20804,7 +21687,7 @@ public final class ContextOuterClass {
                 if (other.getIncludeComponents() != false) {
                     setIncludeComponents(other.getIncludeComponents());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -20816,68 +21699,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.DeviceFilter parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getDeviceIdsFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    includeEndpoints_ = input.readBool();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 24:
-                                {
-                                    includeConfigRules_ = input.readBool();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    includeComponents_ = input.readBool();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.DeviceFilter) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.DeviceIdList deviceIds_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceIdList, context.ContextOuterClass.DeviceIdList.Builder, context.ContextOuterClass.DeviceIdListOrBuilder> deviceIdsBuilder_;
@@ -20887,7 +21722,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceIds field is set.
              */
             public boolean hasDeviceIds() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return deviceIdsBuilder_ != null || deviceIds_ != null;
             }
 
             /**
@@ -20911,11 +21746,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceIds_ = value;
+                    onChanged();
                 } else {
                     deviceIdsBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -20925,11 +21759,10 @@ public final class ContextOuterClass {
             public Builder setDeviceIds(context.ContextOuterClass.DeviceIdList.Builder builderForValue) {
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceIdsBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -20938,16 +21771,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceIds(context.ContextOuterClass.DeviceIdList value) {
                 if (deviceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && deviceIds_ != null && deviceIds_ != context.ContextOuterClass.DeviceIdList.getDefaultInstance()) {
-                        getDeviceIdsBuilder().mergeFrom(value);
+                    if (deviceIds_ != null) {
+                        deviceIds_ = context.ContextOuterClass.DeviceIdList.newBuilder(deviceIds_).mergeFrom(value).buildPartial();
                     } else {
                         deviceIds_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceIdsBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -20955,13 +21787,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceIdList device_ids = 1;</code>
              */
             public Builder clearDeviceIds() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                deviceIds_ = null;
-                if (deviceIdsBuilder_ != null) {
-                    deviceIdsBuilder_.dispose();
+                if (deviceIdsBuilder_ == null) {
+                    deviceIds_ = null;
+                    onChanged();
+                } else {
+                    deviceIds_ = null;
                     deviceIdsBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -20969,7 +21801,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceIdList device_ids = 1;</code>
              */
             public context.ContextOuterClass.DeviceIdList.Builder getDeviceIdsBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDeviceIdsFieldBuilder().getBuilder();
             }
@@ -21014,7 +21845,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeEndpoints(boolean value) {
                 includeEndpoints_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -21024,7 +21854,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeEndpoints() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 includeEndpoints_ = false;
                 onChanged();
                 return this;
@@ -21048,7 +21877,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConfigRules(boolean value) {
                 includeConfigRules_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -21058,7 +21886,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConfigRules() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 includeConfigRules_ = false;
                 onChanged();
                 return this;
@@ -21082,7 +21909,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeComponents(boolean value) {
                 includeComponents_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -21092,7 +21918,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeComponents() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 includeComponents_ = false;
                 onChanged();
                 return this;
@@ -21125,17 +21950,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceFilter(input, extensionRegistry);
             }
         };
 
@@ -21231,6 +22046,83 @@ public final class ContextOuterClass {
             return new DeviceEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+                                if (deviceId_ != null) {
+                                    subBuilder = deviceId_.toBuilder();
+                                }
+                                deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceId_);
+                                    deviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 26:
+                            {
+                                context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
+                                if (deviceConfig_ != null) {
+                                    subBuilder = deviceConfig_.toBuilder();
+                                }
+                                deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceConfig_);
+                                    deviceConfig_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
         }
@@ -21267,7 +22159,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int DEVICE_ID_FIELD_NUMBER = 2;
@@ -21297,7 +22189,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+            return getDeviceId();
         }
 
         public static final int DEVICE_CONFIG_FIELD_NUMBER = 3;
@@ -21327,7 +22219,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
-            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
+            return getDeviceConfig();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -21354,7 +22246,7 @@ public final class ContextOuterClass {
             if (deviceConfig_ != null) {
                 output.writeMessage(3, getDeviceConfig());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -21372,7 +22264,7 @@ public final class ContextOuterClass {
             if (deviceConfig_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getDeviceConfig());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -21404,7 +22296,7 @@ public final class ContextOuterClass {
                 if (!getDeviceConfig().equals(other.getDeviceConfig()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -21428,7 +22320,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + DEVICE_CONFIG_FIELD_NUMBER;
                 hash = (53 * hash) + getDeviceConfig().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -21522,29 +22414,38 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.DeviceEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                deviceConfig_ = null;
-                if (deviceConfigBuilder_ != null) {
-                    deviceConfigBuilder_.dispose();
+                if (deviceConfigBuilder_ == null) {
+                    deviceConfig_ = null;
+                } else {
+                    deviceConfig_ = null;
                     deviceConfigBuilder_ = null;
                 }
                 return this;
@@ -21572,24 +22473,53 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.DeviceEvent buildPartial() {
                 context.ContextOuterClass.DeviceEvent result = new context.ContextOuterClass.DeviceEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (deviceIdBuilder_ == null) {
+                    result.deviceId_ = deviceId_;
+                } else {
+                    result.deviceId_ = deviceIdBuilder_.build();
+                }
+                if (deviceConfigBuilder_ == null) {
+                    result.deviceConfig_ = deviceConfig_;
+                } else {
+                    result.deviceConfig_ = deviceConfigBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.DeviceEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.deviceConfig_ = deviceConfigBuilder_ == null ? deviceConfig_ : deviceConfigBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -21614,7 +22544,7 @@ public final class ContextOuterClass {
                 if (other.hasDeviceConfig()) {
                     mergeDeviceConfig(other.getDeviceConfig());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -21626,61 +22556,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.DeviceEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getDeviceConfigFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.DeviceEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -21690,7 +22579,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -21714,11 +22603,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -21728,11 +22616,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -21741,16 +22628,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -21758,13 +22644,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -21772,7 +22658,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -21808,7 +22693,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceId field is set.
              */
             public boolean hasDeviceId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return deviceIdBuilder_ != null || deviceId_ != null;
             }
 
             /**
@@ -21832,11 +22717,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceId_ = value;
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -21846,11 +22730,10 @@ public final class ContextOuterClass {
             public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (deviceIdBuilder_ == null) {
                     deviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -21859,16 +22742,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                 if (deviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
-                        getDeviceIdBuilder().mergeFrom(value);
+                    if (deviceId_ != null) {
+                        deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
                     } else {
                         deviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -21876,13 +22758,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId device_id = 2;</code>
              */
             public Builder clearDeviceId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                    onChanged();
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -21890,7 +22772,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId device_id = 2;</code>
              */
             public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getDeviceIdFieldBuilder().getBuilder();
             }
@@ -21926,7 +22807,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceConfig field is set.
              */
             public boolean hasDeviceConfig() {
-                return ((bitField0_ & 0x00000004) != 0);
+                return deviceConfigBuilder_ != null || deviceConfig_ != null;
             }
 
             /**
@@ -21950,11 +22831,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceConfig_ = value;
+                    onChanged();
                 } else {
                     deviceConfigBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -21964,11 +22844,10 @@ public final class ContextOuterClass {
             public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
                 if (deviceConfigBuilder_ == null) {
                     deviceConfig_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceConfigBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -21977,16 +22856,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
                 if (deviceConfigBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0) && deviceConfig_ != null && deviceConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) {
-                        getDeviceConfigBuilder().mergeFrom(value);
+                    if (deviceConfig_ != null) {
+                        deviceConfig_ = context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
                     } else {
                         deviceConfig_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceConfigBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -21994,13 +22872,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceConfig device_config = 3;</code>
              */
             public Builder clearDeviceConfig() {
-                bitField0_ = (bitField0_ & ~0x00000004);
-                deviceConfig_ = null;
-                if (deviceConfigBuilder_ != null) {
-                    deviceConfigBuilder_.dispose();
+                if (deviceConfigBuilder_ == null) {
+                    deviceConfig_ = null;
+                    onChanged();
+                } else {
+                    deviceConfig_ = null;
                     deviceConfigBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -22008,7 +22886,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceConfig device_config = 3;</code>
              */
             public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return getDeviceConfigFieldBuilder().getBuilder();
             }
@@ -22062,17 +22939,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public DeviceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceEvent(input, extensionRegistry);
             }
         };
 
@@ -22138,6 +23005,57 @@ public final class ContextOuterClass {
             return new LinkId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private LinkId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (linkUuid_ != null) {
+                                    subBuilder = linkUuid_.toBuilder();
+                                }
+                                linkUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(linkUuid_);
+                                    linkUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
         }
@@ -22174,7 +23092,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
-            return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
+            return getLinkUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -22195,7 +23113,7 @@ public final class ContextOuterClass {
             if (linkUuid_ != null) {
                 output.writeMessage(1, getLinkUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -22207,7 +23125,7 @@ public final class ContextOuterClass {
             if (linkUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getLinkUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -22227,7 +23145,7 @@ public final class ContextOuterClass {
                 if (!getLinkUuid().equals(other.getLinkUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -22243,7 +23161,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -22341,19 +23259,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                linkUuid_ = null;
-                if (linkUuidBuilder_ != null) {
-                    linkUuidBuilder_.dispose();
+                if (linkUuidBuilder_ == null) {
+                    linkUuid_ = null;
+                } else {
+                    linkUuid_ = null;
                     linkUuidBuilder_ = null;
                 }
                 return this;
@@ -22381,18 +23306,43 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkId buildPartial() {
                 context.ContextOuterClass.LinkId result = new context.ContextOuterClass.LinkId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (linkUuidBuilder_ == null) {
+                    result.linkUuid_ = linkUuid_;
+                } else {
+                    result.linkUuid_ = linkUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.LinkId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.linkUuid_ = linkUuidBuilder_ == null ? linkUuid_ : linkUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -22411,7 +23361,7 @@ public final class ContextOuterClass {
                 if (other.hasLinkUuid()) {
                     mergeLinkUuid(other.getLinkUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -22423,47 +23373,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.LinkId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getLinkUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.LinkId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid linkUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> linkUuidBuilder_;
@@ -22473,7 +23396,7 @@ public final class ContextOuterClass {
              * @return Whether the linkUuid field is set.
              */
             public boolean hasLinkUuid() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return linkUuidBuilder_ != null || linkUuid_ != null;
             }
 
             /**
@@ -22497,11 +23420,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     linkUuid_ = value;
+                    onChanged();
                 } else {
                     linkUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -22511,11 +23433,10 @@ public final class ContextOuterClass {
             public Builder setLinkUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (linkUuidBuilder_ == null) {
                     linkUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     linkUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -22524,16 +23445,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeLinkUuid(context.ContextOuterClass.Uuid value) {
                 if (linkUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && linkUuid_ != null && linkUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getLinkUuidBuilder().mergeFrom(value);
+                    if (linkUuid_ != null) {
+                        linkUuid_ = context.ContextOuterClass.Uuid.newBuilder(linkUuid_).mergeFrom(value).buildPartial();
                     } else {
                         linkUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     linkUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -22541,13 +23461,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid link_uuid = 1;</code>
              */
             public Builder clearLinkUuid() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                linkUuid_ = null;
-                if (linkUuidBuilder_ != null) {
-                    linkUuidBuilder_.dispose();
+                if (linkUuidBuilder_ == null) {
+                    linkUuid_ = null;
+                    onChanged();
+                } else {
+                    linkUuid_ = null;
                     linkUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -22555,7 +23475,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid link_uuid = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getLinkUuidBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getLinkUuidFieldBuilder().getBuilder();
             }
@@ -22609,17 +23528,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new LinkId(input, extensionRegistry);
             }
         };
 
@@ -22676,6 +23585,54 @@ public final class ContextOuterClass {
             return new LinkAttributes();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private LinkAttributes(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 13:
+                            {
+                                totalCapacityGbps_ = input.readFloat();
+                                break;
+                            }
+                        case 21:
+                            {
+                                usedCapacityGbps_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
         }
@@ -22687,7 +23644,7 @@ public final class ContextOuterClass {
 
         public static final int TOTAL_CAPACITY_GBPS_FIELD_NUMBER = 1;
 
-        private float totalCapacityGbps_ = 0F;
+        private float totalCapacityGbps_;
 
         /**
          * <code>float total_capacity_gbps = 1;</code>
@@ -22700,7 +23657,7 @@ public final class ContextOuterClass {
 
         public static final int USED_CAPACITY_GBPS_FIELD_NUMBER = 2;
 
-        private float usedCapacityGbps_ = 0F;
+        private float usedCapacityGbps_;
 
         /**
          * <code>float used_capacity_gbps = 2;</code>
@@ -22726,13 +23683,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (java.lang.Float.floatToRawIntBits(totalCapacityGbps_) != 0) {
+            if (totalCapacityGbps_ != 0F) {
                 output.writeFloat(1, totalCapacityGbps_);
             }
-            if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) {
+            if (usedCapacityGbps_ != 0F) {
                 output.writeFloat(2, usedCapacityGbps_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -22741,13 +23698,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (java.lang.Float.floatToRawIntBits(totalCapacityGbps_) != 0) {
+            if (totalCapacityGbps_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, totalCapacityGbps_);
             }
-            if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) {
+            if (usedCapacityGbps_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, usedCapacityGbps_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -22765,7 +23722,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getUsedCapacityGbps()) != java.lang.Float.floatToIntBits(other.getUsedCapacityGbps()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -22781,7 +23738,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getTotalCapacityGbps());
             hash = (37 * hash) + USED_CAPACITY_GBPS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getUsedCapacityGbps());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -22875,16 +23832,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkAttributes.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 totalCapacityGbps_ = 0F;
                 usedCapacityGbps_ = 0F;
                 return this;
@@ -22912,21 +23875,40 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkAttributes buildPartial() {
                 context.ContextOuterClass.LinkAttributes result = new context.ContextOuterClass.LinkAttributes(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.totalCapacityGbps_ = totalCapacityGbps_;
+                result.usedCapacityGbps_ = usedCapacityGbps_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.LinkAttributes result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.totalCapacityGbps_ = totalCapacityGbps_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.usedCapacityGbps_ = usedCapacityGbps_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -22948,7 +23930,7 @@ public final class ContextOuterClass {
                 if (other.getUsedCapacityGbps() != 0F) {
                     setUsedCapacityGbps(other.getUsedCapacityGbps());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -22960,54 +23942,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.LinkAttributes parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 13:
-                                {
-                                    totalCapacityGbps_ = input.readFloat();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 13
-                            case 21:
-                                {
-                                    usedCapacityGbps_ = input.readFloat();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 21
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.LinkAttributes) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private float totalCapacityGbps_;
 
             /**
@@ -23026,7 +23974,6 @@ public final class ContextOuterClass {
              */
             public Builder setTotalCapacityGbps(float value) {
                 totalCapacityGbps_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -23036,7 +23983,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTotalCapacityGbps() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 totalCapacityGbps_ = 0F;
                 onChanged();
                 return this;
@@ -23060,7 +24006,6 @@ public final class ContextOuterClass {
              */
             public Builder setUsedCapacityGbps(float value) {
                 usedCapacityGbps_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -23070,7 +24015,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearUsedCapacityGbps() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 usedCapacityGbps_ = 0F;
                 onChanged();
                 return this;
@@ -23103,17 +24047,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkAttributes parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new LinkAttributes(input, extensionRegistry);
             }
         };
 
@@ -23231,6 +24165,89 @@ public final class ContextOuterClass {
             return new Link();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Link(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.LinkId.Builder subBuilder = null;
+                                if (linkId_ != null) {
+                                    subBuilder = linkId_.toBuilder();
+                                }
+                                linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(linkId_);
+                                    linkId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                linkEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                context.ContextOuterClass.LinkAttributes.Builder subBuilder = null;
+                                if (attributes_ != null) {
+                                    subBuilder = attributes_.toBuilder();
+                                }
+                                attributes_ = input.readMessage(context.ContextOuterClass.LinkAttributes.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(attributes_);
+                                    attributes_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Link_descriptor;
         }
@@ -23267,13 +24284,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+            return getLinkId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -23310,7 +24326,6 @@ public final class ContextOuterClass {
 
         public static final int LINK_ENDPOINT_IDS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_;
 
         /**
@@ -23380,7 +24395,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
-            return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
+            return getAttributes();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -23401,7 +24416,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 output.writeMessage(1, getLinkId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < linkEndpointIds_.size(); i++) {
@@ -23410,7 +24425,7 @@ public final class ContextOuterClass {
             if (attributes_ != null) {
                 output.writeMessage(4, getAttributes());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -23422,7 +24437,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getLinkId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < linkEndpointIds_.size(); i++) {
@@ -23431,7 +24446,7 @@ public final class ContextOuterClass {
             if (attributes_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getAttributes());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -23461,7 +24476,7 @@ public final class ContextOuterClass {
                 if (!getAttributes().equals(other.getAttributes()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -23487,7 +24502,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
                 hash = (53 * hash) + getAttributes().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -23581,32 +24596,40 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Link.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getLinkEndpointIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                linkId_ = null;
-                if (linkIdBuilder_ != null) {
-                    linkIdBuilder_.dispose();
+                if (linkIdBuilder_ == null) {
+                    linkId_ = null;
+                } else {
+                    linkId_ = null;
                     linkIdBuilder_ = null;
                 }
                 name_ = "";
                 if (linkEndpointIdsBuilder_ == null) {
                     linkEndpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    linkEndpointIds_ = null;
                     linkEndpointIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
-                attributes_ = null;
-                if (attributesBuilder_ != null) {
-                    attributesBuilder_.dispose();
+                if (attributesBuilder_ == null) {
+                    attributes_ = null;
+                } else {
+                    attributes_ = null;
                     attributesBuilder_ = null;
                 }
                 return this;
@@ -23634,37 +24657,59 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Link buildPartial() {
                 context.ContextOuterClass.Link result = new context.ContextOuterClass.Link(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (linkIdBuilder_ == null) {
+                    result.linkId_ = linkId_;
+                } else {
+                    result.linkId_ = linkIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Link result) {
+                result.name_ = name_;
                 if (linkEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.linkEndpointIds_ = linkEndpointIds_;
                 } else {
                     result.linkEndpointIds_ = linkEndpointIdsBuilder_.build();
                 }
+                if (attributesBuilder_ == null) {
+                    result.attributes_ = attributes_;
+                } else {
+                    result.attributes_ = attributesBuilder_.build();
+                }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Link result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.attributes_ = attributesBuilder_ == null ? attributes_ : attributesBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -23685,14 +24730,13 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (linkEndpointIdsBuilder_ == null) {
                     if (!other.linkEndpointIds_.isEmpty()) {
                         if (linkEndpointIds_.isEmpty()) {
                             linkEndpointIds_ = other.linkEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureLinkEndpointIdsIsMutable();
                             linkEndpointIds_.addAll(other.linkEndpointIds_);
@@ -23705,7 +24749,7 @@ public final class ContextOuterClass {
                             linkEndpointIdsBuilder_.dispose();
                             linkEndpointIdsBuilder_ = null;
                             linkEndpointIds_ = other.linkEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             linkEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkEndpointIdsFieldBuilder() : null;
                         } else {
                             linkEndpointIdsBuilder_.addAllMessages(other.linkEndpointIds_);
@@ -23715,7 +24759,7 @@ public final class ContextOuterClass {
                 if (other.hasAttributes()) {
                     mergeAttributes(other.getAttributes());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -23727,68 +24771,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Link parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                    if (linkEndpointIdsBuilder_ == null) {
-                                        ensureLinkEndpointIdsIsMutable();
-                                        linkEndpointIds_.add(m);
-                                    } else {
-                                        linkEndpointIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    input.readMessage(getAttributesFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Link) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -23803,7 +24796,7 @@ public final class ContextOuterClass {
              * @return Whether the linkId field is set.
              */
             public boolean hasLinkId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return linkIdBuilder_ != null || linkId_ != null;
             }
 
             /**
@@ -23827,11 +24820,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     linkId_ = value;
+                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -23841,11 +24833,10 @@ public final class ContextOuterClass {
             public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
                 if (linkIdBuilder_ == null) {
                     linkId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -23854,16 +24845,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
                 if (linkIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
-                        getLinkIdBuilder().mergeFrom(value);
+                    if (linkId_ != null) {
+                        linkId_ = context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
                     } else {
                         linkId_ = value;
                     }
+                    onChanged();
                 } else {
                     linkIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -23871,13 +24861,13 @@ public final class ContextOuterClass {
              * <code>.context.LinkId link_id = 1;</code>
              */
             public Builder clearLinkId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                linkId_ = null;
-                if (linkIdBuilder_ != null) {
-                    linkIdBuilder_.dispose();
+                if (linkIdBuilder_ == null) {
+                    linkId_ = null;
+                    onChanged();
+                } else {
+                    linkId_ = null;
                     linkIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -23885,7 +24875,6 @@ public final class ContextOuterClass {
              * <code>.context.LinkId link_id = 1;</code>
              */
             public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getLinkIdFieldBuilder().getBuilder();
             }
@@ -23955,7 +24944,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -23966,7 +24954,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -23982,7 +24969,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -23990,9 +24976,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensureLinkEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(linkEndpointIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -24144,7 +25130,7 @@ public final class ContextOuterClass {
             public Builder clearLinkEndpointIds() {
                 if (linkEndpointIdsBuilder_ == null) {
                     linkEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     linkEndpointIdsBuilder_.clear();
@@ -24218,7 +25204,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsFieldBuilder() {
                 if (linkEndpointIdsBuilder_ == null) {
-                    linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(linkEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(linkEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     linkEndpointIds_ = null;
                 }
                 return linkEndpointIdsBuilder_;
@@ -24233,7 +25219,7 @@ public final class ContextOuterClass {
              * @return Whether the attributes field is set.
              */
             public boolean hasAttributes() {
-                return ((bitField0_ & 0x00000008) != 0);
+                return attributesBuilder_ != null || attributes_ != null;
             }
 
             /**
@@ -24257,11 +25243,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     attributes_ = value;
+                    onChanged();
                 } else {
                     attributesBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -24271,11 +25256,10 @@ public final class ContextOuterClass {
             public Builder setAttributes(context.ContextOuterClass.LinkAttributes.Builder builderForValue) {
                 if (attributesBuilder_ == null) {
                     attributes_ = builderForValue.build();
+                    onChanged();
                 } else {
                     attributesBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -24284,16 +25268,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeAttributes(context.ContextOuterClass.LinkAttributes value) {
                 if (attributesBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0) && attributes_ != null && attributes_ != context.ContextOuterClass.LinkAttributes.getDefaultInstance()) {
-                        getAttributesBuilder().mergeFrom(value);
+                    if (attributes_ != null) {
+                        attributes_ = context.ContextOuterClass.LinkAttributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
                     } else {
                         attributes_ = value;
                     }
+                    onChanged();
                 } else {
                     attributesBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -24301,13 +25284,13 @@ public final class ContextOuterClass {
              * <code>.context.LinkAttributes attributes = 4;</code>
              */
             public Builder clearAttributes() {
-                bitField0_ = (bitField0_ & ~0x00000008);
-                attributes_ = null;
-                if (attributesBuilder_ != null) {
-                    attributesBuilder_.dispose();
+                if (attributesBuilder_ == null) {
+                    attributes_ = null;
+                    onChanged();
+                } else {
+                    attributes_ = null;
                     attributesBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -24315,7 +25298,6 @@ public final class ContextOuterClass {
              * <code>.context.LinkAttributes attributes = 4;</code>
              */
             public context.ContextOuterClass.LinkAttributes.Builder getAttributesBuilder() {
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return getAttributesFieldBuilder().getBuilder();
             }
@@ -24369,17 +25351,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Link parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Link(input, extensionRegistry);
             }
         };
 
@@ -24450,6 +25422,57 @@ public final class ContextOuterClass {
             return new LinkIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private LinkIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                linkIds_.add(input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
         }
@@ -24461,7 +25484,6 @@ public final class ContextOuterClass {
 
         public static final int LINK_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
 
         /**
@@ -24522,7 +25544,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 output.writeMessage(1, linkIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -24534,7 +25556,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, linkIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -24550,7 +25572,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.LinkIdList other = (context.ContextOuterClass.LinkIdList) obj;
             if (!getLinkIdsList().equals(other.getLinkIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -24566,7 +25588,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -24660,23 +25682,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getLinkIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    linkIds_ = null;
                     linkIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -24702,15 +25730,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkIdList buildPartial() {
                 context.ContextOuterClass.LinkIdList result = new context.ContextOuterClass.LinkIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.LinkIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (linkIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
@@ -24720,10 +25740,38 @@ public final class ContextOuterClass {
                 } else {
                     result.linkIds_ = linkIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.LinkIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -24763,7 +25811,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -24775,47 +25823,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.LinkIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-                                    if (linkIdsBuilder_ == null) {
-                                        ensureLinkIdsIsMutable();
-                                        linkIds_.add(m);
-                                    } else {
-                                        linkIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.LinkIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -25085,17 +26103,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new LinkIdList(input, extensionRegistry);
             }
         };
 
@@ -25166,6 +26174,57 @@ public final class ContextOuterClass {
             return new LinkList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private LinkList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    links_ = new java.util.ArrayList<context.ContextOuterClass.Link>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                links_.add(input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    links_ = java.util.Collections.unmodifiableList(links_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
         }
@@ -25177,7 +26236,6 @@ public final class ContextOuterClass {
 
         public static final int LINKS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Link> links_;
 
         /**
@@ -25238,7 +26296,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < links_.size(); i++) {
                 output.writeMessage(1, links_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -25250,7 +26308,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < links_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, links_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -25266,7 +26324,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.LinkList other = (context.ContextOuterClass.LinkList) obj;
             if (!getLinksList().equals(other.getLinksList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -25282,7 +26340,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINKS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinksList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -25376,23 +26434,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getLinksFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (linksBuilder_ == null) {
                     links_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    links_ = null;
                     linksBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -25418,15 +26482,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkList buildPartial() {
                 context.ContextOuterClass.LinkList result = new context.ContextOuterClass.LinkList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.LinkList result) {
+                int from_bitField0_ = bitField0_;
                 if (linksBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         links_ = java.util.Collections.unmodifiableList(links_);
@@ -25436,10 +26492,38 @@ public final class ContextOuterClass {
                 } else {
                     result.links_ = linksBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.LinkList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -25479,7 +26563,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -25491,47 +26575,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.LinkList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Link m = input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry);
-                                    if (linksBuilder_ == null) {
-                                        ensureLinksIsMutable();
-                                        links_.add(m);
-                                    } else {
-                                        linksBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.LinkList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -25801,17 +26855,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new LinkList(input, extensionRegistry);
             }
         };
 
@@ -25890,6 +26934,70 @@ public final class ContextOuterClass {
             return new LinkEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private LinkEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.LinkId.Builder subBuilder = null;
+                                if (linkId_ != null) {
+                                    subBuilder = linkId_.toBuilder();
+                                }
+                                linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(linkId_);
+                                    linkId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
         }
@@ -25926,7 +27034,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int LINK_ID_FIELD_NUMBER = 2;
@@ -25956,7 +27064,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+            return getLinkId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -25980,7 +27088,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 output.writeMessage(2, getLinkId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -25995,7 +27103,7 @@ public final class ContextOuterClass {
             if (linkId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getLinkId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -26021,7 +27129,7 @@ public final class ContextOuterClass {
                 if (!getLinkId().equals(other.getLinkId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -26041,7 +27149,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -26135,24 +27243,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.LinkEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                linkId_ = null;
-                if (linkIdBuilder_ != null) {
-                    linkIdBuilder_.dispose();
+                if (linkIdBuilder_ == null) {
+                    linkId_ = null;
+                } else {
+                    linkId_ = null;
                     linkIdBuilder_ = null;
                 }
                 return this;
@@ -26180,21 +27296,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.LinkEvent buildPartial() {
                 context.ContextOuterClass.LinkEvent result = new context.ContextOuterClass.LinkEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (linkIdBuilder_ == null) {
+                    result.linkId_ = linkId_;
+                } else {
+                    result.linkId_ = linkIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.LinkEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -26216,7 +27359,7 @@ public final class ContextOuterClass {
                 if (other.hasLinkId()) {
                     mergeLinkId(other.getLinkId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -26228,54 +27371,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.LinkEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.LinkEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -26285,7 +27394,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -26309,11 +27418,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -26323,11 +27431,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -26336,16 +27443,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -26353,13 +27459,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -26367,7 +27473,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -26403,7 +27508,7 @@ public final class ContextOuterClass {
              * @return Whether the linkId field is set.
              */
             public boolean hasLinkId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return linkIdBuilder_ != null || linkId_ != null;
             }
 
             /**
@@ -26427,11 +27532,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     linkId_ = value;
+                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -26441,11 +27545,10 @@ public final class ContextOuterClass {
             public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
                 if (linkIdBuilder_ == null) {
                     linkId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -26454,16 +27557,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
                 if (linkIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
-                        getLinkIdBuilder().mergeFrom(value);
+                    if (linkId_ != null) {
+                        linkId_ = context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
                     } else {
                         linkId_ = value;
                     }
+                    onChanged();
                 } else {
                     linkIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -26471,13 +27573,13 @@ public final class ContextOuterClass {
              * <code>.context.LinkId link_id = 2;</code>
              */
             public Builder clearLinkId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                linkId_ = null;
-                if (linkIdBuilder_ != null) {
-                    linkIdBuilder_.dispose();
+                if (linkIdBuilder_ == null) {
+                    linkId_ = null;
+                    onChanged();
+                } else {
+                    linkId_ = null;
                     linkIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -26485,7 +27587,6 @@ public final class ContextOuterClass {
              * <code>.context.LinkId link_id = 2;</code>
              */
             public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getLinkIdFieldBuilder().getBuilder();
             }
@@ -26539,17 +27640,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public LinkEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new LinkEvent(input, extensionRegistry);
             }
         };
 
@@ -26632,6 +27723,70 @@ public final class ContextOuterClass {
             return new ServiceId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (serviceUuid_ != null) {
+                                    subBuilder = serviceUuid_.toBuilder();
+                                }
+                                serviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceUuid_);
+                                    serviceUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
         }
@@ -26668,7 +27823,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            return getContextId();
         }
 
         public static final int SERVICE_UUID_FIELD_NUMBER = 2;
@@ -26698,7 +27853,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
-            return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
+            return getServiceUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -26722,7 +27877,7 @@ public final class ContextOuterClass {
             if (serviceUuid_ != null) {
                 output.writeMessage(2, getServiceUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -26737,7 +27892,7 @@ public final class ContextOuterClass {
             if (serviceUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -26763,7 +27918,7 @@ public final class ContextOuterClass {
                 if (!getServiceUuid().equals(other.getServiceUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -26783,7 +27938,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICE_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getServiceUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -26881,24 +28036,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                serviceUuid_ = null;
-                if (serviceUuidBuilder_ != null) {
-                    serviceUuidBuilder_.dispose();
+                if (serviceUuidBuilder_ == null) {
+                    serviceUuid_ = null;
+                } else {
+                    serviceUuid_ = null;
                     serviceUuidBuilder_ = null;
                 }
                 return this;
@@ -26926,21 +28089,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceId buildPartial() {
                 context.ContextOuterClass.ServiceId result = new context.ContextOuterClass.ServiceId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
+                }
+                if (serviceUuidBuilder_ == null) {
+                    result.serviceUuid_ = serviceUuid_;
+                } else {
+                    result.serviceUuid_ = serviceUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.serviceUuid_ = serviceUuidBuilder_ == null ? serviceUuid_ : serviceUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -26962,7 +28152,7 @@ public final class ContextOuterClass {
                 if (other.hasServiceUuid()) {
                     mergeServiceUuid(other.getServiceUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -26974,54 +28164,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getServiceUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
@@ -27031,7 +28187,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return contextIdBuilder_ != null || contextId_ != null;
             }
 
             /**
@@ -27055,11 +28211,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -27069,11 +28224,10 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -27082,16 +28236,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
                     } else {
                         contextId_ = value;
                     }
+                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -27099,13 +28252,13 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -27113,7 +28266,6 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -27149,7 +28301,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceUuid field is set.
              */
             public boolean hasServiceUuid() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return serviceUuidBuilder_ != null || serviceUuid_ != null;
             }
 
             /**
@@ -27173,11 +28325,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceUuid_ = value;
+                    onChanged();
                 } else {
                     serviceUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -27187,11 +28338,10 @@ public final class ContextOuterClass {
             public Builder setServiceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (serviceUuidBuilder_ == null) {
                     serviceUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -27200,16 +28350,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceUuid(context.ContextOuterClass.Uuid value) {
                 if (serviceUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && serviceUuid_ != null && serviceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getServiceUuidBuilder().mergeFrom(value);
+                    if (serviceUuid_ != null) {
+                        serviceUuid_ = context.ContextOuterClass.Uuid.newBuilder(serviceUuid_).mergeFrom(value).buildPartial();
                     } else {
                         serviceUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -27217,13 +28366,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid service_uuid = 2;</code>
              */
             public Builder clearServiceUuid() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                serviceUuid_ = null;
-                if (serviceUuidBuilder_ != null) {
-                    serviceUuidBuilder_.dispose();
+                if (serviceUuidBuilder_ == null) {
+                    serviceUuid_ = null;
+                    onChanged();
+                } else {
+                    serviceUuid_ = null;
                     serviceUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -27231,7 +28380,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid service_uuid = 2;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getServiceUuidBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceUuidFieldBuilder().getBuilder();
             }
@@ -27285,17 +28433,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceId(input, extensionRegistry);
             }
         };
 
@@ -27486,6 +28624,133 @@ public final class ContextOuterClass {
             return new Service();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Service(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
+                                if (serviceId_ != null) {
+                                    subBuilder = serviceId_.toBuilder();
+                                }
+                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceId_);
+                                    serviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 24:
+                            {
+                                int rawValue = input.readEnum();
+                                serviceType_ = rawValue;
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                serviceEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 42:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                serviceConstraints_.add(input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 50:
+                            {
+                                context.ContextOuterClass.ServiceStatus.Builder subBuilder = null;
+                                if (serviceStatus_ != null) {
+                                    subBuilder = serviceStatus_.toBuilder();
+                                }
+                                serviceStatus_ = input.readMessage(context.ContextOuterClass.ServiceStatus.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceStatus_);
+                                    serviceStatus_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 58:
+                            {
+                                context.ContextOuterClass.ServiceConfig.Builder subBuilder = null;
+                                if (serviceConfig_ != null) {
+                                    subBuilder = serviceConfig_.toBuilder();
+                                }
+                                serviceConfig_ = input.readMessage(context.ContextOuterClass.ServiceConfig.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceConfig_);
+                                    serviceConfig_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 66:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (timestamp_ != null) {
+                                    subBuilder = timestamp_.toBuilder();
+                                }
+                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(timestamp_);
+                                    timestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Service_descriptor;
         }
@@ -27522,13 +28787,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+            return getServiceId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -27565,7 +28829,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_TYPE_FIELD_NUMBER = 3;
 
-        private int serviceType_ = 0;
+        private int serviceType_;
 
         /**
          * <code>.context.ServiceTypeEnum service_type = 3;</code>
@@ -27582,13 +28846,13 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
-            context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.forNumber(serviceType_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
             return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
         }
 
         public static final int SERVICE_ENDPOINT_IDS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_;
 
         /**
@@ -27633,7 +28897,6 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_CONSTRAINTS_FIELD_NUMBER = 5;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_;
 
         /**
@@ -27703,7 +28966,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
-            return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
+            return getServiceStatus();
         }
 
         public static final int SERVICE_CONFIG_FIELD_NUMBER = 7;
@@ -27733,7 +28996,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
-            return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
+            return getServiceConfig();
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 8;
@@ -27763,7 +29026,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+            return getTimestamp();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -27784,7 +29047,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 output.writeMessage(1, getServiceId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
@@ -27805,7 +29068,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 output.writeMessage(8, getTimestamp());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -27817,7 +29080,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getServiceId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
@@ -27838,7 +29101,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getTimestamp());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -27884,7 +29147,7 @@ public final class ContextOuterClass {
                 if (!getTimestamp().equals(other.getTimestamp()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -27924,7 +29187,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getTimestamp().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -28018,50 +29281,60 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Service.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getServiceEndpointIdsFieldBuilder();
+                    getServiceConstraintsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
                 name_ = "";
                 serviceType_ = 0;
                 if (serviceEndpointIdsBuilder_ == null) {
                     serviceEndpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    serviceEndpointIds_ = null;
                     serviceEndpointIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
                 if (serviceConstraintsBuilder_ == null) {
                     serviceConstraints_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    serviceConstraints_ = null;
                     serviceConstraintsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000010);
-                serviceStatus_ = null;
-                if (serviceStatusBuilder_ != null) {
-                    serviceStatusBuilder_.dispose();
+                if (serviceStatusBuilder_ == null) {
+                    serviceStatus_ = null;
+                } else {
+                    serviceStatus_ = null;
                     serviceStatusBuilder_ = null;
                 }
-                serviceConfig_ = null;
-                if (serviceConfigBuilder_ != null) {
-                    serviceConfigBuilder_.dispose();
+                if (serviceConfigBuilder_ == null) {
+                    serviceConfig_ = null;
+                } else {
+                    serviceConfig_ = null;
                     serviceConfigBuilder_ = null;
                 }
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
                 return this;
@@ -28089,55 +29362,79 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Service buildPartial() {
                 context.ContextOuterClass.Service result = new context.ContextOuterClass.Service(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (serviceIdBuilder_ == null) {
+                    result.serviceId_ = serviceId_;
+                } else {
+                    result.serviceId_ = serviceIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Service result) {
+                result.name_ = name_;
+                result.serviceType_ = serviceType_;
                 if (serviceEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.serviceEndpointIds_ = serviceEndpointIds_;
                 } else {
                     result.serviceEndpointIds_ = serviceEndpointIdsBuilder_.build();
                 }
                 if (serviceConstraintsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
-                        bitField0_ = (bitField0_ & ~0x00000010);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.serviceConstraints_ = serviceConstraints_;
                 } else {
                     result.serviceConstraints_ = serviceConstraintsBuilder_.build();
                 }
-            }
-
-            private void buildPartial0(context.ContextOuterClass.Service result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.serviceType_ = serviceType_;
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.serviceStatus_ = serviceStatusBuilder_ == null ? serviceStatus_ : serviceStatusBuilder_.build();
+                if (serviceStatusBuilder_ == null) {
+                    result.serviceStatus_ = serviceStatus_;
+                } else {
+                    result.serviceStatus_ = serviceStatusBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000040) != 0)) {
-                    result.serviceConfig_ = serviceConfigBuilder_ == null ? serviceConfig_ : serviceConfigBuilder_.build();
+                if (serviceConfigBuilder_ == null) {
+                    result.serviceConfig_ = serviceConfig_;
+                } else {
+                    result.serviceConfig_ = serviceConfigBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000080) != 0)) {
-                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                if (timestampBuilder_ == null) {
+                    result.timestamp_ = timestamp_;
+                } else {
+                    result.timestamp_ = timestampBuilder_.build();
                 }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -28158,7 +29455,6 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.serviceType_ != 0) {
@@ -28168,7 +29464,7 @@ public final class ContextOuterClass {
                     if (!other.serviceEndpointIds_.isEmpty()) {
                         if (serviceEndpointIds_.isEmpty()) {
                             serviceEndpointIds_ = other.serviceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureServiceEndpointIdsIsMutable();
                             serviceEndpointIds_.addAll(other.serviceEndpointIds_);
@@ -28181,7 +29477,7 @@ public final class ContextOuterClass {
                             serviceEndpointIdsBuilder_.dispose();
                             serviceEndpointIdsBuilder_ = null;
                             serviceEndpointIds_ = other.serviceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             serviceEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceEndpointIdsFieldBuilder() : null;
                         } else {
                             serviceEndpointIdsBuilder_.addAllMessages(other.serviceEndpointIds_);
@@ -28192,7 +29488,7 @@ public final class ContextOuterClass {
                     if (!other.serviceConstraints_.isEmpty()) {
                         if (serviceConstraints_.isEmpty()) {
                             serviceConstraints_ = other.serviceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureServiceConstraintsIsMutable();
                             serviceConstraints_.addAll(other.serviceConstraints_);
@@ -28205,7 +29501,7 @@ public final class ContextOuterClass {
                             serviceConstraintsBuilder_.dispose();
                             serviceConstraintsBuilder_ = null;
                             serviceConstraints_ = other.serviceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             serviceConstraintsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceConstraintsFieldBuilder() : null;
                         } else {
                             serviceConstraintsBuilder_.addAllMessages(other.serviceConstraints_);
@@ -28221,7 +29517,7 @@ public final class ContextOuterClass {
                 if (other.hasTimestamp()) {
                     mergeTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -28233,101 +29529,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Service parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 24:
-                                {
-                                    serviceType_ = input.readEnum();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 34:
-                                {
-                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                    if (serviceEndpointIdsBuilder_ == null) {
-                                        ensureServiceEndpointIdsIsMutable();
-                                        serviceEndpointIds_.add(m);
-                                    } else {
-                                        serviceEndpointIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    context.ContextOuterClass.Constraint m = input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry);
-                                    if (serviceConstraintsBuilder_ == null) {
-                                        ensureServiceConstraintsIsMutable();
-                                        serviceConstraints_.add(m);
-                                    } else {
-                                        serviceConstraintsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    input.readMessage(getServiceStatusFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 50
-                            case 58:
-                                {
-                                    input.readMessage(getServiceConfigFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000040;
-                                    break;
-                                }
-                            // case 58
-                            case 66:
-                                {
-                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000080;
-                                    break;
-                                }
-                            // case 66
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Service) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -28342,7 +29554,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return serviceIdBuilder_ != null || serviceId_ != null;
             }
 
             /**
@@ -28366,11 +29578,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -28380,11 +29591,10 @@ public final class ContextOuterClass {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -28393,16 +29603,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
-                        getServiceIdBuilder().mergeFrom(value);
+                    if (serviceId_ != null) {
+                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
                     } else {
                         serviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -28410,13 +29619,13 @@ public final class ContextOuterClass {
              * <code>.context.ServiceId service_id = 1;</code>
              */
             public Builder clearServiceId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                    onChanged();
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -28424,7 +29633,6 @@ public final class ContextOuterClass {
              * <code>.context.ServiceId service_id = 1;</code>
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -28494,7 +29702,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -28505,7 +29712,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -28521,7 +29727,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -28544,7 +29749,6 @@ public final class ContextOuterClass {
              */
             public Builder setServiceTypeValue(int value) {
                 serviceType_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -28555,7 +29759,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
-                context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.forNumber(serviceType_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
                 return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
             }
 
@@ -28568,7 +29773,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000004;
                 serviceType_ = value.getNumber();
                 onChanged();
                 return this;
@@ -28579,7 +29783,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearServiceType() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 serviceType_ = 0;
                 onChanged();
                 return this;
@@ -28588,9 +29791,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensureServiceEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(serviceEndpointIds_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -28742,7 +29945,7 @@ public final class ContextOuterClass {
             public Builder clearServiceEndpointIds() {
                 if (serviceEndpointIdsBuilder_ == null) {
                     serviceEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     serviceEndpointIdsBuilder_.clear();
@@ -28816,7 +30019,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getServiceEndpointIdsFieldBuilder() {
                 if (serviceEndpointIdsBuilder_ == null) {
-                    serviceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(serviceEndpointIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    serviceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(serviceEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     serviceEndpointIds_ = null;
                 }
                 return serviceEndpointIdsBuilder_;
@@ -28825,9 +30028,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_ = java.util.Collections.emptyList();
 
             private void ensureServiceConstraintsIsMutable() {
-                if (!((bitField0_ & 0x00000010) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(serviceConstraints_);
-                    bitField0_ |= 0x00000010;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -28979,7 +30182,7 @@ public final class ContextOuterClass {
             public Builder clearServiceConstraints() {
                 if (serviceConstraintsBuilder_ == null) {
                     serviceConstraints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000010);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     serviceConstraintsBuilder_.clear();
@@ -29053,7 +30256,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> getServiceConstraintsFieldBuilder() {
                 if (serviceConstraintsBuilder_ == null) {
-                    serviceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(serviceConstraints_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
+                    serviceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(serviceConstraints_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     serviceConstraints_ = null;
                 }
                 return serviceConstraintsBuilder_;
@@ -29068,7 +30271,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceStatus field is set.
              */
             public boolean hasServiceStatus() {
-                return ((bitField0_ & 0x00000020) != 0);
+                return serviceStatusBuilder_ != null || serviceStatus_ != null;
             }
 
             /**
@@ -29092,11 +30295,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceStatus_ = value;
+                    onChanged();
                 } else {
                     serviceStatusBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -29106,11 +30308,10 @@ public final class ContextOuterClass {
             public Builder setServiceStatus(context.ContextOuterClass.ServiceStatus.Builder builderForValue) {
                 if (serviceStatusBuilder_ == null) {
                     serviceStatus_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceStatusBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -29119,16 +30320,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceStatus(context.ContextOuterClass.ServiceStatus value) {
                 if (serviceStatusBuilder_ == null) {
-                    if (((bitField0_ & 0x00000020) != 0) && serviceStatus_ != null && serviceStatus_ != context.ContextOuterClass.ServiceStatus.getDefaultInstance()) {
-                        getServiceStatusBuilder().mergeFrom(value);
+                    if (serviceStatus_ != null) {
+                        serviceStatus_ = context.ContextOuterClass.ServiceStatus.newBuilder(serviceStatus_).mergeFrom(value).buildPartial();
                     } else {
                         serviceStatus_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceStatusBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -29136,13 +30336,13 @@ public final class ContextOuterClass {
              * <code>.context.ServiceStatus service_status = 6;</code>
              */
             public Builder clearServiceStatus() {
-                bitField0_ = (bitField0_ & ~0x00000020);
-                serviceStatus_ = null;
-                if (serviceStatusBuilder_ != null) {
-                    serviceStatusBuilder_.dispose();
+                if (serviceStatusBuilder_ == null) {
+                    serviceStatus_ = null;
+                    onChanged();
+                } else {
+                    serviceStatus_ = null;
                     serviceStatusBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -29150,7 +30350,6 @@ public final class ContextOuterClass {
              * <code>.context.ServiceStatus service_status = 6;</code>
              */
             public context.ContextOuterClass.ServiceStatus.Builder getServiceStatusBuilder() {
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return getServiceStatusFieldBuilder().getBuilder();
             }
@@ -29186,7 +30385,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceConfig field is set.
              */
             public boolean hasServiceConfig() {
-                return ((bitField0_ & 0x00000040) != 0);
+                return serviceConfigBuilder_ != null || serviceConfig_ != null;
             }
 
             /**
@@ -29210,11 +30409,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceConfig_ = value;
+                    onChanged();
                 } else {
                     serviceConfigBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -29224,11 +30422,10 @@ public final class ContextOuterClass {
             public Builder setServiceConfig(context.ContextOuterClass.ServiceConfig.Builder builderForValue) {
                 if (serviceConfigBuilder_ == null) {
                     serviceConfig_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceConfigBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -29237,16 +30434,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceConfig(context.ContextOuterClass.ServiceConfig value) {
                 if (serviceConfigBuilder_ == null) {
-                    if (((bitField0_ & 0x00000040) != 0) && serviceConfig_ != null && serviceConfig_ != context.ContextOuterClass.ServiceConfig.getDefaultInstance()) {
-                        getServiceConfigBuilder().mergeFrom(value);
+                    if (serviceConfig_ != null) {
+                        serviceConfig_ = context.ContextOuterClass.ServiceConfig.newBuilder(serviceConfig_).mergeFrom(value).buildPartial();
                     } else {
                         serviceConfig_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceConfigBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -29254,13 +30450,13 @@ public final class ContextOuterClass {
              * <code>.context.ServiceConfig service_config = 7;</code>
              */
             public Builder clearServiceConfig() {
-                bitField0_ = (bitField0_ & ~0x00000040);
-                serviceConfig_ = null;
-                if (serviceConfigBuilder_ != null) {
-                    serviceConfigBuilder_.dispose();
+                if (serviceConfigBuilder_ == null) {
+                    serviceConfig_ = null;
+                    onChanged();
+                } else {
+                    serviceConfig_ = null;
                     serviceConfigBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -29268,7 +30464,6 @@ public final class ContextOuterClass {
              * <code>.context.ServiceConfig service_config = 7;</code>
              */
             public context.ContextOuterClass.ServiceConfig.Builder getServiceConfigBuilder() {
-                bitField0_ |= 0x00000040;
                 onChanged();
                 return getServiceConfigFieldBuilder().getBuilder();
             }
@@ -29304,7 +30499,7 @@ public final class ContextOuterClass {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return ((bitField0_ & 0x00000080) != 0);
+                return timestampBuilder_ != null || timestamp_ != null;
             }
 
             /**
@@ -29328,11 +30523,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -29342,11 +30536,10 @@ public final class ContextOuterClass {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -29355,16 +30548,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000080) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getTimestampBuilder().mergeFrom(value);
+                    if (timestamp_ != null) {
+                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
                     } else {
                         timestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -29372,13 +30564,13 @@ public final class ContextOuterClass {
              * <code>.context.Timestamp timestamp = 8;</code>
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000080);
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                    onChanged();
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -29386,7 +30578,6 @@ public final class ContextOuterClass {
              * <code>.context.Timestamp timestamp = 8;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-                bitField0_ |= 0x00000080;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -29440,17 +30631,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Service parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Service(input, extensionRegistry);
             }
         };
 
@@ -29508,6 +30689,50 @@ public final class ContextOuterClass {
             return new ServiceStatus();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceStatus(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                serviceStatus_ = rawValue;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
         }
@@ -29519,7 +30744,7 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_STATUS_FIELD_NUMBER = 1;
 
-        private int serviceStatus_ = 0;
+        private int serviceStatus_;
 
         /**
          * <code>.context.ServiceStatusEnum service_status = 1;</code>
@@ -29536,7 +30761,8 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
-            context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.forNumber(serviceStatus_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
             return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
         }
 
@@ -29558,7 +30784,7 @@ public final class ContextOuterClass {
             if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
                 output.writeEnum(1, serviceStatus_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -29570,7 +30796,7 @@ public final class ContextOuterClass {
             if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, serviceStatus_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -29586,7 +30812,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceStatus other = (context.ContextOuterClass.ServiceStatus) obj;
             if (serviceStatus_ != other.serviceStatus_)
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -29600,7 +30826,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + SERVICE_STATUS_FIELD_NUMBER;
             hash = (53 * hash) + serviceStatus_;
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -29694,16 +30920,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceStatus.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 serviceStatus_ = 0;
                 return this;
             }
@@ -29730,18 +30962,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceStatus buildPartial() {
                 context.ContextOuterClass.ServiceStatus result = new context.ContextOuterClass.ServiceStatus(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.serviceStatus_ = serviceStatus_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceStatus result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.serviceStatus_ = serviceStatus_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -29760,7 +31013,7 @@ public final class ContextOuterClass {
                 if (other.serviceStatus_ != 0) {
                     setServiceStatusValue(other.getServiceStatusValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -29772,47 +31025,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceStatus parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    serviceStatus_ = input.readEnum();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceStatus) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int serviceStatus_ = 0;
 
             /**
@@ -29831,7 +31057,6 @@ public final class ContextOuterClass {
              */
             public Builder setServiceStatusValue(int value) {
                 serviceStatus_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -29842,7 +31067,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
-                context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.forNumber(serviceStatus_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
                 return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
             }
 
@@ -29855,7 +31081,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000001;
                 serviceStatus_ = value.getNumber();
                 onChanged();
                 return this;
@@ -29866,7 +31091,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearServiceStatus() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 serviceStatus_ = 0;
                 onChanged();
                 return this;
@@ -29899,17 +31123,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceStatus parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceStatus(input, extensionRegistry);
             }
         };
 
@@ -29980,6 +31194,57 @@ public final class ContextOuterClass {
             return new ServiceConfig();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                configRules_.add(input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    configRules_ = java.util.Collections.unmodifiableList(configRules_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
         }
@@ -29991,7 +31256,6 @@ public final class ContextOuterClass {
 
         public static final int CONFIG_RULES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
 
         /**
@@ -30052,7 +31316,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 output.writeMessage(1, configRules_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -30064,7 +31328,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -30080,7 +31344,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceConfig other = (context.ContextOuterClass.ServiceConfig) obj;
             if (!getConfigRulesList().equals(other.getConfigRulesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -30096,7 +31360,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                 hash = (53 * hash) + getConfigRulesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -30190,23 +31454,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceConfig.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getConfigRulesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (configRulesBuilder_ == null) {
                     configRules_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    configRules_ = null;
                     configRulesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -30232,15 +31502,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceConfig buildPartial() {
                 context.ContextOuterClass.ServiceConfig result = new context.ContextOuterClass.ServiceConfig(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceConfig result) {
+                int from_bitField0_ = bitField0_;
                 if (configRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         configRules_ = java.util.Collections.unmodifiableList(configRules_);
@@ -30250,10 +31512,38 @@ public final class ContextOuterClass {
                 } else {
                     result.configRules_ = configRulesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceConfig result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -30293,7 +31583,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -30305,47 +31595,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceConfig parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
-                                    if (configRulesBuilder_ == null) {
-                                        ensureConfigRulesIsMutable();
-                                        configRules_.add(m);
-                                    } else {
-                                        configRulesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -30615,17 +31875,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceConfig(input, extensionRegistry);
             }
         };
 
@@ -30696,6 +31946,57 @@ public final class ContextOuterClass {
             return new ServiceIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                serviceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
         }
@@ -30707,7 +32008,6 @@ public final class ContextOuterClass {
 
         public static final int SERVICE_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;
 
         /**
@@ -30768,7 +32068,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < serviceIds_.size(); i++) {
                 output.writeMessage(1, serviceIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -30780,7 +32080,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < serviceIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, serviceIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -30796,7 +32096,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceIdList other = (context.ContextOuterClass.ServiceIdList) obj;
             if (!getServiceIdsList().equals(other.getServiceIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -30812,7 +32112,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getServiceIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -30906,23 +32206,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getServiceIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (serviceIdsBuilder_ == null) {
                     serviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    serviceIds_ = null;
                     serviceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -30948,15 +32254,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceIdList buildPartial() {
                 context.ContextOuterClass.ServiceIdList result = new context.ContextOuterClass.ServiceIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (serviceIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
@@ -30966,10 +32264,38 @@ public final class ContextOuterClass {
                 } else {
                     result.serviceIds_ = serviceIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -31009,7 +32335,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -31021,47 +32347,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                    if (serviceIdsBuilder_ == null) {
-                                        ensureServiceIdsIsMutable();
-                                        serviceIds_.add(m);
-                                    } else {
-                                        serviceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -31331,17 +32627,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceIdList(input, extensionRegistry);
             }
         };
 
@@ -31412,6 +32698,57 @@ public final class ContextOuterClass {
             return new ServiceList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    services_ = new java.util.ArrayList<context.ContextOuterClass.Service>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                services_.add(input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    services_ = java.util.Collections.unmodifiableList(services_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
         }
@@ -31423,7 +32760,6 @@ public final class ContextOuterClass {
 
         public static final int SERVICES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Service> services_;
 
         /**
@@ -31484,7 +32820,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < services_.size(); i++) {
                 output.writeMessage(1, services_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -31496,7 +32832,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < services_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, services_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -31512,7 +32848,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ServiceList other = (context.ContextOuterClass.ServiceList) obj;
             if (!getServicesList().equals(other.getServicesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -31528,7 +32864,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICES_FIELD_NUMBER;
                 hash = (53 * hash) + getServicesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -31622,23 +32958,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getServicesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (servicesBuilder_ == null) {
                     services_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    services_ = null;
                     servicesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -31664,15 +33006,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceList buildPartial() {
                 context.ContextOuterClass.ServiceList result = new context.ContextOuterClass.ServiceList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceList result) {
+                int from_bitField0_ = bitField0_;
                 if (servicesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         services_ = java.util.Collections.unmodifiableList(services_);
@@ -31682,10 +33016,38 @@ public final class ContextOuterClass {
                 } else {
                     result.services_ = servicesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -31725,7 +33087,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -31737,47 +33099,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Service m = input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry);
-                                    if (servicesBuilder_ == null) {
-                                        ensureServicesIsMutable();
-                                        services_.add(m);
-                                    } else {
-                                        servicesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -32047,17 +33379,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceList(input, extensionRegistry);
             }
         };
 
@@ -32137,6 +33459,72 @@ public final class ContextOuterClass {
             return new ServiceFilter();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceFilter(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ServiceIdList.Builder subBuilder = null;
+                                if (serviceIds_ != null) {
+                                    subBuilder = serviceIds_.toBuilder();
+                                }
+                                serviceIds_ = input.readMessage(context.ContextOuterClass.ServiceIdList.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceIds_);
+                                    serviceIds_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                includeEndpointIds_ = input.readBool();
+                                break;
+                            }
+                        case 24:
+                            {
+                                includeConstraints_ = input.readBool();
+                                break;
+                            }
+                        case 32:
+                            {
+                                includeConfigRules_ = input.readBool();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
         }
@@ -32173,12 +33561,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder() {
-            return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
+            return getServiceIds();
         }
 
         public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
 
-        private boolean includeEndpointIds_ = false;
+        private boolean includeEndpointIds_;
 
         /**
          * <code>bool include_endpoint_ids = 2;</code>
@@ -32191,7 +33579,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;
 
-        private boolean includeConstraints_ = false;
+        private boolean includeConstraints_;
 
         /**
          * <code>bool include_constraints = 3;</code>
@@ -32204,7 +33592,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 4;
 
-        private boolean includeConfigRules_ = false;
+        private boolean includeConfigRules_;
 
         /**
          * <code>bool include_config_rules = 4;</code>
@@ -32242,7 +33630,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 output.writeBool(4, includeConfigRules_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -32263,7 +33651,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeConfigRules_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -32289,7 +33677,7 @@ public final class ContextOuterClass {
                 return false;
             if (getIncludeConfigRules() != other.getIncludeConfigRules())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -32311,7 +33699,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConstraints());
             hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -32405,19 +33793,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceFilter.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                serviceIds_ = null;
-                if (serviceIdsBuilder_ != null) {
-                    serviceIdsBuilder_.dispose();
+                if (serviceIdsBuilder_ == null) {
+                    serviceIds_ = null;
+                } else {
+                    serviceIds_ = null;
                     serviceIdsBuilder_ = null;
                 }
                 includeEndpointIds_ = false;
@@ -32448,27 +33843,46 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceFilter buildPartial() {
                 context.ContextOuterClass.ServiceFilter result = new context.ContextOuterClass.ServiceFilter(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (serviceIdsBuilder_ == null) {
+                    result.serviceIds_ = serviceIds_;
+                } else {
+                    result.serviceIds_ = serviceIdsBuilder_.build();
                 }
+                result.includeEndpointIds_ = includeEndpointIds_;
+                result.includeConstraints_ = includeConstraints_;
+                result.includeConfigRules_ = includeConfigRules_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceFilter result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.serviceIds_ = serviceIdsBuilder_ == null ? serviceIds_ : serviceIdsBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.includeEndpointIds_ = includeEndpointIds_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.includeConstraints_ = includeConstraints_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.includeConfigRules_ = includeConfigRules_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -32496,7 +33910,7 @@ public final class ContextOuterClass {
                 if (other.getIncludeConfigRules() != false) {
                     setIncludeConfigRules(other.getIncludeConfigRules());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -32508,68 +33922,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceFilter parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getServiceIdsFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    includeEndpointIds_ = input.readBool();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 24:
-                                {
-                                    includeConstraints_ = input.readBool();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    includeConfigRules_ = input.readBool();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceFilter) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.ServiceIdList serviceIds_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceIdList, context.ContextOuterClass.ServiceIdList.Builder, context.ContextOuterClass.ServiceIdListOrBuilder> serviceIdsBuilder_;
@@ -32579,7 +33945,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceIds field is set.
              */
             public boolean hasServiceIds() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return serviceIdsBuilder_ != null || serviceIds_ != null;
             }
 
             /**
@@ -32603,11 +33969,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceIds_ = value;
+                    onChanged();
                 } else {
                     serviceIdsBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -32617,11 +33982,10 @@ public final class ContextOuterClass {
             public Builder setServiceIds(context.ContextOuterClass.ServiceIdList.Builder builderForValue) {
                 if (serviceIdsBuilder_ == null) {
                     serviceIds_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceIdsBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -32630,16 +33994,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceIds(context.ContextOuterClass.ServiceIdList value) {
                 if (serviceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && serviceIds_ != null && serviceIds_ != context.ContextOuterClass.ServiceIdList.getDefaultInstance()) {
-                        getServiceIdsBuilder().mergeFrom(value);
+                    if (serviceIds_ != null) {
+                        serviceIds_ = context.ContextOuterClass.ServiceIdList.newBuilder(serviceIds_).mergeFrom(value).buildPartial();
                     } else {
                         serviceIds_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceIdsBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -32647,13 +34010,13 @@ public final class ContextOuterClass {
              * <code>.context.ServiceIdList service_ids = 1;</code>
              */
             public Builder clearServiceIds() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                serviceIds_ = null;
-                if (serviceIdsBuilder_ != null) {
-                    serviceIdsBuilder_.dispose();
+                if (serviceIdsBuilder_ == null) {
+                    serviceIds_ = null;
+                    onChanged();
+                } else {
+                    serviceIds_ = null;
                     serviceIdsBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -32661,7 +34024,6 @@ public final class ContextOuterClass {
              * <code>.context.ServiceIdList service_ids = 1;</code>
              */
             public context.ContextOuterClass.ServiceIdList.Builder getServiceIdsBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getServiceIdsFieldBuilder().getBuilder();
             }
@@ -32706,7 +34068,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeEndpointIds(boolean value) {
                 includeEndpointIds_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -32716,7 +34077,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeEndpointIds() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 includeEndpointIds_ = false;
                 onChanged();
                 return this;
@@ -32740,7 +34100,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConstraints(boolean value) {
                 includeConstraints_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -32750,7 +34109,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConstraints() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 includeConstraints_ = false;
                 onChanged();
                 return this;
@@ -32774,7 +34132,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConfigRules(boolean value) {
                 includeConfigRules_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -32784,7 +34141,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConfigRules() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 includeConfigRules_ = false;
                 onChanged();
                 return this;
@@ -32817,17 +34173,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceFilter(input, extensionRegistry);
             }
         };
 
@@ -32906,6 +34252,70 @@ public final class ContextOuterClass {
             return new ServiceEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ServiceEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
+                                if (serviceId_ != null) {
+                                    subBuilder = serviceId_.toBuilder();
+                                }
+                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceId_);
+                                    serviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
         }
@@ -32942,7 +34352,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int SERVICE_ID_FIELD_NUMBER = 2;
@@ -32972,7 +34382,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+            return getServiceId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -32996,7 +34406,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 output.writeMessage(2, getServiceId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -33011,7 +34421,7 @@ public final class ContextOuterClass {
             if (serviceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -33037,7 +34447,7 @@ public final class ContextOuterClass {
                 if (!getServiceId().equals(other.getServiceId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -33057,7 +34467,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getServiceId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -33151,24 +34561,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ServiceEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
                 return this;
@@ -33196,21 +34614,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ServiceEvent buildPartial() {
                 context.ContextOuterClass.ServiceEvent result = new context.ContextOuterClass.ServiceEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (serviceIdBuilder_ == null) {
+                    result.serviceId_ = serviceId_;
+                } else {
+                    result.serviceId_ = serviceIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ServiceEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -33232,7 +34677,7 @@ public final class ContextOuterClass {
                 if (other.hasServiceId()) {
                     mergeServiceId(other.getServiceId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -33244,54 +34689,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ServiceEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ServiceEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -33301,7 +34712,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -33325,11 +34736,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -33339,11 +34749,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -33352,16 +34761,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -33369,13 +34777,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -33383,7 +34791,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -33419,7 +34826,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return serviceIdBuilder_ != null || serviceId_ != null;
             }
 
             /**
@@ -33443,11 +34850,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -33457,11 +34863,10 @@ public final class ContextOuterClass {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -33470,16 +34875,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
-                        getServiceIdBuilder().mergeFrom(value);
+                    if (serviceId_ != null) {
+                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
                     } else {
                         serviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -33487,13 +34891,13 @@ public final class ContextOuterClass {
              * <code>.context.ServiceId service_id = 2;</code>
              */
             public Builder clearServiceId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                    onChanged();
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -33501,7 +34905,6 @@ public final class ContextOuterClass {
              * <code>.context.ServiceId service_id = 2;</code>
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -33555,17 +34958,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ServiceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ServiceEvent(input, extensionRegistry);
             }
         };
 
@@ -33648,6 +35041,70 @@ public final class ContextOuterClass {
             return new SliceId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (sliceUuid_ != null) {
+                                    subBuilder = sliceUuid_.toBuilder();
+                                }
+                                sliceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceUuid_);
+                                    sliceUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
         }
@@ -33684,7 +35141,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            return getContextId();
         }
 
         public static final int SLICE_UUID_FIELD_NUMBER = 2;
@@ -33714,7 +35171,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
-            return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
+            return getSliceUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -33738,7 +35195,7 @@ public final class ContextOuterClass {
             if (sliceUuid_ != null) {
                 output.writeMessage(2, getSliceUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -33753,7 +35210,7 @@ public final class ContextOuterClass {
             if (sliceUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSliceUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -33779,7 +35236,7 @@ public final class ContextOuterClass {
                 if (!getSliceUuid().equals(other.getSliceUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -33799,7 +35256,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICE_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getSliceUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -33897,24 +35354,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                sliceUuid_ = null;
-                if (sliceUuidBuilder_ != null) {
-                    sliceUuidBuilder_.dispose();
+                if (sliceUuidBuilder_ == null) {
+                    sliceUuid_ = null;
+                } else {
+                    sliceUuid_ = null;
                     sliceUuidBuilder_ = null;
                 }
                 return this;
@@ -33942,21 +35407,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceId buildPartial() {
                 context.ContextOuterClass.SliceId result = new context.ContextOuterClass.SliceId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
+                }
+                if (sliceUuidBuilder_ == null) {
+                    result.sliceUuid_ = sliceUuid_;
+                } else {
+                    result.sliceUuid_ = sliceUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.sliceUuid_ = sliceUuidBuilder_ == null ? sliceUuid_ : sliceUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -33978,7 +35470,7 @@ public final class ContextOuterClass {
                 if (other.hasSliceUuid()) {
                     mergeSliceUuid(other.getSliceUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -33990,54 +35482,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getSliceUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
@@ -34047,7 +35505,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return contextIdBuilder_ != null || contextId_ != null;
             }
 
             /**
@@ -34071,11 +35529,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -34085,11 +35542,10 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -34098,16 +35554,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
                     } else {
                         contextId_ = value;
                     }
+                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -34115,13 +35570,13 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -34129,7 +35584,6 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -34165,7 +35619,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceUuid field is set.
              */
             public boolean hasSliceUuid() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return sliceUuidBuilder_ != null || sliceUuid_ != null;
             }
 
             /**
@@ -34189,11 +35643,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceUuid_ = value;
+                    onChanged();
                 } else {
                     sliceUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -34203,11 +35656,10 @@ public final class ContextOuterClass {
             public Builder setSliceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (sliceUuidBuilder_ == null) {
                     sliceUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -34216,16 +35668,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceUuid(context.ContextOuterClass.Uuid value) {
                 if (sliceUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && sliceUuid_ != null && sliceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getSliceUuidBuilder().mergeFrom(value);
+                    if (sliceUuid_ != null) {
+                        sliceUuid_ = context.ContextOuterClass.Uuid.newBuilder(sliceUuid_).mergeFrom(value).buildPartial();
                     } else {
                         sliceUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -34233,13 +35684,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid slice_uuid = 2;</code>
              */
             public Builder clearSliceUuid() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                sliceUuid_ = null;
-                if (sliceUuidBuilder_ != null) {
-                    sliceUuidBuilder_.dispose();
+                if (sliceUuidBuilder_ == null) {
+                    sliceUuid_ = null;
+                    onChanged();
+                } else {
+                    sliceUuid_ = null;
                     sliceUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -34247,7 +35698,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid slice_uuid = 2;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getSliceUuidBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getSliceUuidFieldBuilder().getBuilder();
             }
@@ -34301,17 +35751,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceId(input, extensionRegistry);
             }
         };
 
@@ -34558,6 +35998,164 @@ public final class ContextOuterClass {
             return new Slice();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Slice(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.SliceId.Builder subBuilder = null;
+                                if (sliceId_ != null) {
+                                    subBuilder = sliceId_.toBuilder();
+                                }
+                                sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceId_);
+                                    sliceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                sliceEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                sliceConstraints_.add(input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 42:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
+                                    sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
+                                    mutable_bitField0_ |= 0x00000004;
+                                }
+                                sliceServiceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 50:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000008) != 0)) {
+                                    sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
+                                    mutable_bitField0_ |= 0x00000008;
+                                }
+                                sliceSubsliceIds_.add(input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 58:
+                            {
+                                context.ContextOuterClass.SliceStatus.Builder subBuilder = null;
+                                if (sliceStatus_ != null) {
+                                    subBuilder = sliceStatus_.toBuilder();
+                                }
+                                sliceStatus_ = input.readMessage(context.ContextOuterClass.SliceStatus.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceStatus_);
+                                    sliceStatus_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 66:
+                            {
+                                context.ContextOuterClass.SliceConfig.Builder subBuilder = null;
+                                if (sliceConfig_ != null) {
+                                    subBuilder = sliceConfig_.toBuilder();
+                                }
+                                sliceConfig_ = input.readMessage(context.ContextOuterClass.SliceConfig.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceConfig_);
+                                    sliceConfig_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 74:
+                            {
+                                context.ContextOuterClass.SliceOwner.Builder subBuilder = null;
+                                if (sliceOwner_ != null) {
+                                    subBuilder = sliceOwner_.toBuilder();
+                                }
+                                sliceOwner_ = input.readMessage(context.ContextOuterClass.SliceOwner.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceOwner_);
+                                    sliceOwner_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 82:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (timestamp_ != null) {
+                                    subBuilder = timestamp_.toBuilder();
+                                }
+                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(timestamp_);
+                                    timestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
+                }
+                if (((mutable_bitField0_ & 0x00000004) != 0)) {
+                    sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000008) != 0)) {
+                    sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Slice_descriptor;
         }
@@ -34594,13 +36192,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+            return getSliceId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -34637,7 +36234,6 @@ public final class ContextOuterClass {
 
         public static final int SLICE_ENDPOINT_IDS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_;
 
         /**
@@ -34682,7 +36278,6 @@ public final class ContextOuterClass {
 
         public static final int SLICE_CONSTRAINTS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_;
 
         /**
@@ -34727,7 +36322,6 @@ public final class ContextOuterClass {
 
         public static final int SLICE_SERVICE_IDS_FIELD_NUMBER = 5;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_;
 
         /**
@@ -34772,7 +36366,6 @@ public final class ContextOuterClass {
 
         public static final int SLICE_SUBSLICE_IDS_FIELD_NUMBER = 6;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_;
 
         /**
@@ -34842,7 +36435,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
-            return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
+            return getSliceStatus();
         }
 
         public static final int SLICE_CONFIG_FIELD_NUMBER = 8;
@@ -34872,7 +36465,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
-            return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
+            return getSliceConfig();
         }
 
         public static final int SLICE_OWNER_FIELD_NUMBER = 9;
@@ -34902,7 +36495,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
-            return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
+            return getSliceOwner();
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 10;
@@ -34932,7 +36525,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+            return getTimestamp();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -34953,7 +36546,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 output.writeMessage(1, getSliceId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
             for (int i = 0; i < sliceEndpointIds_.size(); i++) {
@@ -34980,7 +36573,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 output.writeMessage(10, getTimestamp());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -34992,7 +36585,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSliceId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
             for (int i = 0; i < sliceEndpointIds_.size(); i++) {
@@ -35019,7 +36612,7 @@ public final class ContextOuterClass {
             if (timestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getTimestamp());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -35073,7 +36666,7 @@ public final class ContextOuterClass {
                 if (!getTimestamp().equals(other.getTimestamp()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -35123,7 +36716,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getTimestamp().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -35217,68 +36810,79 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Slice.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getSliceEndpointIdsFieldBuilder();
+                    getSliceConstraintsFieldBuilder();
+                    getSliceServiceIdsFieldBuilder();
+                    getSliceSubsliceIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                sliceId_ = null;
-                if (sliceIdBuilder_ != null) {
-                    sliceIdBuilder_.dispose();
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = null;
+                } else {
+                    sliceId_ = null;
                     sliceIdBuilder_ = null;
                 }
                 name_ = "";
                 if (sliceEndpointIdsBuilder_ == null) {
                     sliceEndpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    sliceEndpointIds_ = null;
                     sliceEndpointIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 if (sliceConstraintsBuilder_ == null) {
                     sliceConstraints_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    sliceConstraints_ = null;
                     sliceConstraintsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
                 if (sliceServiceIdsBuilder_ == null) {
                     sliceServiceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
                 } else {
-                    sliceServiceIds_ = null;
                     sliceServiceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000010);
                 if (sliceSubsliceIdsBuilder_ == null) {
                     sliceSubsliceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000008);
                 } else {
-                    sliceSubsliceIds_ = null;
                     sliceSubsliceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000020);
-                sliceStatus_ = null;
-                if (sliceStatusBuilder_ != null) {
-                    sliceStatusBuilder_.dispose();
+                if (sliceStatusBuilder_ == null) {
+                    sliceStatus_ = null;
+                } else {
+                    sliceStatus_ = null;
                     sliceStatusBuilder_ = null;
                 }
-                sliceConfig_ = null;
-                if (sliceConfigBuilder_ != null) {
-                    sliceConfigBuilder_.dispose();
+                if (sliceConfigBuilder_ == null) {
+                    sliceConfig_ = null;
+                } else {
+                    sliceConfig_ = null;
                     sliceConfigBuilder_ = null;
                 }
-                sliceOwner_ = null;
-                if (sliceOwnerBuilder_ != null) {
-                    sliceOwnerBuilder_.dispose();
+                if (sliceOwnerBuilder_ == null) {
+                    sliceOwner_ = null;
+                } else {
+                    sliceOwner_ = null;
                     sliceOwnerBuilder_ = null;
                 }
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
                 return this;
@@ -35306,73 +36910,101 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Slice buildPartial() {
                 context.ContextOuterClass.Slice result = new context.ContextOuterClass.Slice(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (sliceIdBuilder_ == null) {
+                    result.sliceId_ = sliceId_;
+                } else {
+                    result.sliceId_ = sliceIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Slice result) {
+                result.name_ = name_;
                 if (sliceEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.sliceEndpointIds_ = sliceEndpointIds_;
                 } else {
                     result.sliceEndpointIds_ = sliceEndpointIdsBuilder_.build();
                 }
                 if (sliceConstraintsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.sliceConstraints_ = sliceConstraints_;
                 } else {
                     result.sliceConstraints_ = sliceConstraintsBuilder_.build();
                 }
                 if (sliceServiceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000010);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.sliceServiceIds_ = sliceServiceIds_;
                 } else {
                     result.sliceServiceIds_ = sliceServiceIdsBuilder_.build();
                 }
                 if (sliceSubsliceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000020) != 0)) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
                         sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000020);
+                        bitField0_ = (bitField0_ & ~0x00000008);
                     }
                     result.sliceSubsliceIds_ = sliceSubsliceIds_;
                 } else {
                     result.sliceSubsliceIds_ = sliceSubsliceIdsBuilder_.build();
                 }
-            }
-
-            private void buildPartial0(context.ContextOuterClass.Slice result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000040) != 0)) {
-                    result.sliceStatus_ = sliceStatusBuilder_ == null ? sliceStatus_ : sliceStatusBuilder_.build();
+                if (sliceStatusBuilder_ == null) {
+                    result.sliceStatus_ = sliceStatus_;
+                } else {
+                    result.sliceStatus_ = sliceStatusBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000080) != 0)) {
-                    result.sliceConfig_ = sliceConfigBuilder_ == null ? sliceConfig_ : sliceConfigBuilder_.build();
+                if (sliceConfigBuilder_ == null) {
+                    result.sliceConfig_ = sliceConfig_;
+                } else {
+                    result.sliceConfig_ = sliceConfigBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000100) != 0)) {
-                    result.sliceOwner_ = sliceOwnerBuilder_ == null ? sliceOwner_ : sliceOwnerBuilder_.build();
+                if (sliceOwnerBuilder_ == null) {
+                    result.sliceOwner_ = sliceOwner_;
+                } else {
+                    result.sliceOwner_ = sliceOwnerBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000200) != 0)) {
-                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                if (timestampBuilder_ == null) {
+                    result.timestamp_ = timestamp_;
+                } else {
+                    result.timestamp_ = timestampBuilder_.build();
                 }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -35393,14 +37025,13 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (sliceEndpointIdsBuilder_ == null) {
                     if (!other.sliceEndpointIds_.isEmpty()) {
                         if (sliceEndpointIds_.isEmpty()) {
                             sliceEndpointIds_ = other.sliceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureSliceEndpointIdsIsMutable();
                             sliceEndpointIds_.addAll(other.sliceEndpointIds_);
@@ -35413,7 +37044,7 @@ public final class ContextOuterClass {
                             sliceEndpointIdsBuilder_.dispose();
                             sliceEndpointIdsBuilder_ = null;
                             sliceEndpointIds_ = other.sliceEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             sliceEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceEndpointIdsFieldBuilder() : null;
                         } else {
                             sliceEndpointIdsBuilder_.addAllMessages(other.sliceEndpointIds_);
@@ -35424,7 +37055,7 @@ public final class ContextOuterClass {
                     if (!other.sliceConstraints_.isEmpty()) {
                         if (sliceConstraints_.isEmpty()) {
                             sliceConstraints_ = other.sliceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureSliceConstraintsIsMutable();
                             sliceConstraints_.addAll(other.sliceConstraints_);
@@ -35437,7 +37068,7 @@ public final class ContextOuterClass {
                             sliceConstraintsBuilder_.dispose();
                             sliceConstraintsBuilder_ = null;
                             sliceConstraints_ = other.sliceConstraints_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             sliceConstraintsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceConstraintsFieldBuilder() : null;
                         } else {
                             sliceConstraintsBuilder_.addAllMessages(other.sliceConstraints_);
@@ -35448,7 +37079,7 @@ public final class ContextOuterClass {
                     if (!other.sliceServiceIds_.isEmpty()) {
                         if (sliceServiceIds_.isEmpty()) {
                             sliceServiceIds_ = other.sliceServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureSliceServiceIdsIsMutable();
                             sliceServiceIds_.addAll(other.sliceServiceIds_);
@@ -35461,7 +37092,7 @@ public final class ContextOuterClass {
                             sliceServiceIdsBuilder_.dispose();
                             sliceServiceIdsBuilder_ = null;
                             sliceServiceIds_ = other.sliceServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000010);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             sliceServiceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceServiceIdsFieldBuilder() : null;
                         } else {
                             sliceServiceIdsBuilder_.addAllMessages(other.sliceServiceIds_);
@@ -35472,7 +37103,7 @@ public final class ContextOuterClass {
                     if (!other.sliceSubsliceIds_.isEmpty()) {
                         if (sliceSubsliceIds_.isEmpty()) {
                             sliceSubsliceIds_ = other.sliceSubsliceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000020);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                         } else {
                             ensureSliceSubsliceIdsIsMutable();
                             sliceSubsliceIds_.addAll(other.sliceSubsliceIds_);
@@ -35485,7 +37116,7 @@ public final class ContextOuterClass {
                             sliceSubsliceIdsBuilder_.dispose();
                             sliceSubsliceIdsBuilder_ = null;
                             sliceSubsliceIds_ = other.sliceSubsliceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000020);
+                            bitField0_ = (bitField0_ & ~0x00000008);
                             sliceSubsliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceSubsliceIdsFieldBuilder() : null;
                         } else {
                             sliceSubsliceIdsBuilder_.addAllMessages(other.sliceSubsliceIds_);
@@ -35504,7 +37135,7 @@ public final class ContextOuterClass {
                 if (other.hasTimestamp()) {
                     mergeTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -35516,125 +37147,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Slice parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                    if (sliceEndpointIdsBuilder_ == null) {
-                                        ensureSliceEndpointIdsIsMutable();
-                                        sliceEndpointIds_.add(m);
-                                    } else {
-                                        sliceEndpointIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    context.ContextOuterClass.Constraint m = input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry);
-                                    if (sliceConstraintsBuilder_ == null) {
-                                        ensureSliceConstraintsIsMutable();
-                                        sliceConstraints_.add(m);
-                                    } else {
-                                        sliceConstraintsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                    if (sliceServiceIdsBuilder_ == null) {
-                                        ensureSliceServiceIdsIsMutable();
-                                        sliceServiceIds_.add(m);
-                                    } else {
-                                        sliceServiceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-                                    if (sliceSubsliceIdsBuilder_ == null) {
-                                        ensureSliceSubsliceIdsIsMutable();
-                                        sliceSubsliceIds_.add(m);
-                                    } else {
-                                        sliceSubsliceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 50
-                            case 58:
-                                {
-                                    input.readMessage(getSliceStatusFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000040;
-                                    break;
-                                }
-                            // case 58
-                            case 66:
-                                {
-                                    input.readMessage(getSliceConfigFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000080;
-                                    break;
-                                }
-                            // case 66
-                            case 74:
-                                {
-                                    input.readMessage(getSliceOwnerFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000100;
-                                    break;
-                                }
-                            // case 74
-                            case 82:
-                                {
-                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000200;
-                                    break;
-                                }
-                            // case 82
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Slice) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -35649,7 +37172,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceId field is set.
              */
             public boolean hasSliceId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return sliceIdBuilder_ != null || sliceId_ != null;
             }
 
             /**
@@ -35673,11 +37196,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceId_ = value;
+                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -35687,11 +37209,10 @@ public final class ContextOuterClass {
             public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
                 if (sliceIdBuilder_ == null) {
                     sliceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -35700,16 +37221,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
                 if (sliceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
-                        getSliceIdBuilder().mergeFrom(value);
+                    if (sliceId_ != null) {
+                        sliceId_ = context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
                     } else {
                         sliceId_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -35717,13 +37237,13 @@ public final class ContextOuterClass {
              * <code>.context.SliceId slice_id = 1;</code>
              */
             public Builder clearSliceId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                sliceId_ = null;
-                if (sliceIdBuilder_ != null) {
-                    sliceIdBuilder_.dispose();
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = null;
+                    onChanged();
+                } else {
+                    sliceId_ = null;
                     sliceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -35731,7 +37251,6 @@ public final class ContextOuterClass {
              * <code>.context.SliceId slice_id = 1;</code>
              */
             public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSliceIdFieldBuilder().getBuilder();
             }
@@ -35801,7 +37320,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -35812,7 +37330,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -35828,7 +37345,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -35836,9 +37352,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(sliceEndpointIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -35990,7 +37506,7 @@ public final class ContextOuterClass {
             public Builder clearSliceEndpointIds() {
                 if (sliceEndpointIdsBuilder_ == null) {
                     sliceEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     sliceEndpointIdsBuilder_.clear();
@@ -36064,7 +37580,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getSliceEndpointIdsFieldBuilder() {
                 if (sliceEndpointIdsBuilder_ == null) {
-                    sliceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(sliceEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    sliceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(sliceEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     sliceEndpointIds_ = null;
                 }
                 return sliceEndpointIdsBuilder_;
@@ -36073,9 +37589,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_ = java.util.Collections.emptyList();
 
             private void ensureSliceConstraintsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(sliceConstraints_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -36227,7 +37743,7 @@ public final class ContextOuterClass {
             public Builder clearSliceConstraints() {
                 if (sliceConstraintsBuilder_ == null) {
                     sliceConstraints_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     sliceConstraintsBuilder_.clear();
@@ -36301,7 +37817,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> getSliceConstraintsFieldBuilder() {
                 if (sliceConstraintsBuilder_ == null) {
-                    sliceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(sliceConstraints_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    sliceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(sliceConstraints_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     sliceConstraints_ = null;
                 }
                 return sliceConstraintsBuilder_;
@@ -36310,9 +37826,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceServiceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000010) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(sliceServiceIds_);
-                    bitField0_ |= 0x00000010;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -36464,7 +37980,7 @@ public final class ContextOuterClass {
             public Builder clearSliceServiceIds() {
                 if (sliceServiceIdsBuilder_ == null) {
                     sliceServiceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000010);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     sliceServiceIdsBuilder_.clear();
@@ -36538,7 +38054,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getSliceServiceIdsFieldBuilder() {
                 if (sliceServiceIdsBuilder_ == null) {
-                    sliceServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(sliceServiceIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
+                    sliceServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(sliceServiceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     sliceServiceIds_ = null;
                 }
                 return sliceServiceIdsBuilder_;
@@ -36547,9 +38063,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_ = java.util.Collections.emptyList();
 
             private void ensureSliceSubsliceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000020) != 0)) {
+                if (!((bitField0_ & 0x00000008) != 0)) {
                     sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceSubsliceIds_);
-                    bitField0_ |= 0x00000020;
+                    bitField0_ |= 0x00000008;
                 }
             }
 
@@ -36701,7 +38217,7 @@ public final class ContextOuterClass {
             public Builder clearSliceSubsliceIds() {
                 if (sliceSubsliceIdsBuilder_ == null) {
                     sliceSubsliceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000020);
+                    bitField0_ = (bitField0_ & ~0x00000008);
                     onChanged();
                 } else {
                     sliceSubsliceIdsBuilder_.clear();
@@ -36775,7 +38291,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceSubsliceIdsFieldBuilder() {
                 if (sliceSubsliceIdsBuilder_ == null) {
-                    sliceSubsliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceSubsliceIds_, ((bitField0_ & 0x00000020) != 0), getParentForChildren(), isClean());
+                    sliceSubsliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceSubsliceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                     sliceSubsliceIds_ = null;
                 }
                 return sliceSubsliceIdsBuilder_;
@@ -36790,7 +38306,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceStatus field is set.
              */
             public boolean hasSliceStatus() {
-                return ((bitField0_ & 0x00000040) != 0);
+                return sliceStatusBuilder_ != null || sliceStatus_ != null;
             }
 
             /**
@@ -36814,11 +38330,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceStatus_ = value;
+                    onChanged();
                 } else {
                     sliceStatusBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -36828,11 +38343,10 @@ public final class ContextOuterClass {
             public Builder setSliceStatus(context.ContextOuterClass.SliceStatus.Builder builderForValue) {
                 if (sliceStatusBuilder_ == null) {
                     sliceStatus_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceStatusBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -36841,16 +38355,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceStatus(context.ContextOuterClass.SliceStatus value) {
                 if (sliceStatusBuilder_ == null) {
-                    if (((bitField0_ & 0x00000040) != 0) && sliceStatus_ != null && sliceStatus_ != context.ContextOuterClass.SliceStatus.getDefaultInstance()) {
-                        getSliceStatusBuilder().mergeFrom(value);
+                    if (sliceStatus_ != null) {
+                        sliceStatus_ = context.ContextOuterClass.SliceStatus.newBuilder(sliceStatus_).mergeFrom(value).buildPartial();
                     } else {
                         sliceStatus_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceStatusBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -36858,13 +38371,13 @@ public final class ContextOuterClass {
              * <code>.context.SliceStatus slice_status = 7;</code>
              */
             public Builder clearSliceStatus() {
-                bitField0_ = (bitField0_ & ~0x00000040);
-                sliceStatus_ = null;
-                if (sliceStatusBuilder_ != null) {
-                    sliceStatusBuilder_.dispose();
+                if (sliceStatusBuilder_ == null) {
+                    sliceStatus_ = null;
+                    onChanged();
+                } else {
+                    sliceStatus_ = null;
                     sliceStatusBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -36872,7 +38385,6 @@ public final class ContextOuterClass {
              * <code>.context.SliceStatus slice_status = 7;</code>
              */
             public context.ContextOuterClass.SliceStatus.Builder getSliceStatusBuilder() {
-                bitField0_ |= 0x00000040;
                 onChanged();
                 return getSliceStatusFieldBuilder().getBuilder();
             }
@@ -36908,7 +38420,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceConfig field is set.
              */
             public boolean hasSliceConfig() {
-                return ((bitField0_ & 0x00000080) != 0);
+                return sliceConfigBuilder_ != null || sliceConfig_ != null;
             }
 
             /**
@@ -36932,11 +38444,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceConfig_ = value;
+                    onChanged();
                 } else {
                     sliceConfigBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -36946,11 +38457,10 @@ public final class ContextOuterClass {
             public Builder setSliceConfig(context.ContextOuterClass.SliceConfig.Builder builderForValue) {
                 if (sliceConfigBuilder_ == null) {
                     sliceConfig_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceConfigBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -36959,16 +38469,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceConfig(context.ContextOuterClass.SliceConfig value) {
                 if (sliceConfigBuilder_ == null) {
-                    if (((bitField0_ & 0x00000080) != 0) && sliceConfig_ != null && sliceConfig_ != context.ContextOuterClass.SliceConfig.getDefaultInstance()) {
-                        getSliceConfigBuilder().mergeFrom(value);
+                    if (sliceConfig_ != null) {
+                        sliceConfig_ = context.ContextOuterClass.SliceConfig.newBuilder(sliceConfig_).mergeFrom(value).buildPartial();
                     } else {
                         sliceConfig_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceConfigBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -36976,13 +38485,13 @@ public final class ContextOuterClass {
              * <code>.context.SliceConfig slice_config = 8;</code>
              */
             public Builder clearSliceConfig() {
-                bitField0_ = (bitField0_ & ~0x00000080);
-                sliceConfig_ = null;
-                if (sliceConfigBuilder_ != null) {
-                    sliceConfigBuilder_.dispose();
+                if (sliceConfigBuilder_ == null) {
+                    sliceConfig_ = null;
+                    onChanged();
+                } else {
+                    sliceConfig_ = null;
                     sliceConfigBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -36990,7 +38499,6 @@ public final class ContextOuterClass {
              * <code>.context.SliceConfig slice_config = 8;</code>
              */
             public context.ContextOuterClass.SliceConfig.Builder getSliceConfigBuilder() {
-                bitField0_ |= 0x00000080;
                 onChanged();
                 return getSliceConfigFieldBuilder().getBuilder();
             }
@@ -37026,7 +38534,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceOwner field is set.
              */
             public boolean hasSliceOwner() {
-                return ((bitField0_ & 0x00000100) != 0);
+                return sliceOwnerBuilder_ != null || sliceOwner_ != null;
             }
 
             /**
@@ -37050,11 +38558,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceOwner_ = value;
+                    onChanged();
                 } else {
                     sliceOwnerBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -37064,11 +38571,10 @@ public final class ContextOuterClass {
             public Builder setSliceOwner(context.ContextOuterClass.SliceOwner.Builder builderForValue) {
                 if (sliceOwnerBuilder_ == null) {
                     sliceOwner_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceOwnerBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -37077,16 +38583,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceOwner(context.ContextOuterClass.SliceOwner value) {
                 if (sliceOwnerBuilder_ == null) {
-                    if (((bitField0_ & 0x00000100) != 0) && sliceOwner_ != null && sliceOwner_ != context.ContextOuterClass.SliceOwner.getDefaultInstance()) {
-                        getSliceOwnerBuilder().mergeFrom(value);
+                    if (sliceOwner_ != null) {
+                        sliceOwner_ = context.ContextOuterClass.SliceOwner.newBuilder(sliceOwner_).mergeFrom(value).buildPartial();
                     } else {
                         sliceOwner_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceOwnerBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -37094,13 +38599,13 @@ public final class ContextOuterClass {
              * <code>.context.SliceOwner slice_owner = 9;</code>
              */
             public Builder clearSliceOwner() {
-                bitField0_ = (bitField0_ & ~0x00000100);
-                sliceOwner_ = null;
-                if (sliceOwnerBuilder_ != null) {
-                    sliceOwnerBuilder_.dispose();
+                if (sliceOwnerBuilder_ == null) {
+                    sliceOwner_ = null;
+                    onChanged();
+                } else {
+                    sliceOwner_ = null;
                     sliceOwnerBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -37108,7 +38613,6 @@ public final class ContextOuterClass {
              * <code>.context.SliceOwner slice_owner = 9;</code>
              */
             public context.ContextOuterClass.SliceOwner.Builder getSliceOwnerBuilder() {
-                bitField0_ |= 0x00000100;
                 onChanged();
                 return getSliceOwnerFieldBuilder().getBuilder();
             }
@@ -37144,7 +38648,7 @@ public final class ContextOuterClass {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return ((bitField0_ & 0x00000200) != 0);
+                return timestampBuilder_ != null || timestamp_ != null;
             }
 
             /**
@@ -37168,11 +38672,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000200;
-                onChanged();
                 return this;
             }
 
@@ -37182,11 +38685,10 @@ public final class ContextOuterClass {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000200;
-                onChanged();
                 return this;
             }
 
@@ -37195,16 +38697,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000200) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getTimestampBuilder().mergeFrom(value);
+                    if (timestamp_ != null) {
+                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
                     } else {
                         timestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000200;
-                onChanged();
                 return this;
             }
 
@@ -37212,13 +38713,13 @@ public final class ContextOuterClass {
              * <code>.context.Timestamp timestamp = 10;</code>
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000200);
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                    onChanged();
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -37226,7 +38727,6 @@ public final class ContextOuterClass {
              * <code>.context.Timestamp timestamp = 10;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-                bitField0_ |= 0x00000200;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -37280,17 +38780,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Slice parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Slice(input, extensionRegistry);
             }
         };
 
@@ -37365,6 +38855,63 @@ public final class ContextOuterClass {
             return new SliceOwner();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceOwner(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (ownerUuid_ != null) {
+                                    subBuilder = ownerUuid_.toBuilder();
+                                }
+                                ownerUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(ownerUuid_);
+                                    ownerUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                ownerString_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
         }
@@ -37401,13 +38948,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
-            return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
+            return getOwnerUuid();
         }
 
         public static final int OWNER_STRING_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object ownerString_ = "";
+        private volatile java.lang.Object ownerString_;
 
         /**
          * <code>string owner_string = 2;</code>
@@ -37460,10 +39006,10 @@ public final class ContextOuterClass {
             if (ownerUuid_ != null) {
                 output.writeMessage(1, getOwnerUuid());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ownerString_)) {
+            if (!getOwnerStringBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ownerString_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -37475,10 +39021,10 @@ public final class ContextOuterClass {
             if (ownerUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOwnerUuid());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ownerString_)) {
+            if (!getOwnerStringBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ownerString_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -37500,7 +39046,7 @@ public final class ContextOuterClass {
             }
             if (!getOwnerString().equals(other.getOwnerString()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -37518,7 +39064,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + OWNER_STRING_FIELD_NUMBER;
             hash = (53 * hash) + getOwnerString().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -37612,19 +39158,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceOwner.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                ownerUuid_ = null;
-                if (ownerUuidBuilder_ != null) {
-                    ownerUuidBuilder_.dispose();
+                if (ownerUuidBuilder_ == null) {
+                    ownerUuid_ = null;
+                } else {
+                    ownerUuid_ = null;
                     ownerUuidBuilder_ = null;
                 }
                 ownerString_ = "";
@@ -37653,21 +39206,44 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceOwner buildPartial() {
                 context.ContextOuterClass.SliceOwner result = new context.ContextOuterClass.SliceOwner(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (ownerUuidBuilder_ == null) {
+                    result.ownerUuid_ = ownerUuid_;
+                } else {
+                    result.ownerUuid_ = ownerUuidBuilder_.build();
                 }
+                result.ownerString_ = ownerString_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceOwner result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.ownerUuid_ = ownerUuidBuilder_ == null ? ownerUuid_ : ownerUuidBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.ownerString_ = ownerString_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -37688,10 +39264,9 @@ public final class ContextOuterClass {
                 }
                 if (!other.getOwnerString().isEmpty()) {
                     ownerString_ = other.ownerString_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -37703,54 +39278,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceOwner parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getOwnerUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    ownerString_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceOwner) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid ownerUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> ownerUuidBuilder_;
@@ -37760,7 +39301,7 @@ public final class ContextOuterClass {
              * @return Whether the ownerUuid field is set.
              */
             public boolean hasOwnerUuid() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return ownerUuidBuilder_ != null || ownerUuid_ != null;
             }
 
             /**
@@ -37784,11 +39325,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     ownerUuid_ = value;
+                    onChanged();
                 } else {
                     ownerUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -37798,11 +39338,10 @@ public final class ContextOuterClass {
             public Builder setOwnerUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (ownerUuidBuilder_ == null) {
                     ownerUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     ownerUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -37811,16 +39350,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeOwnerUuid(context.ContextOuterClass.Uuid value) {
                 if (ownerUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && ownerUuid_ != null && ownerUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getOwnerUuidBuilder().mergeFrom(value);
+                    if (ownerUuid_ != null) {
+                        ownerUuid_ = context.ContextOuterClass.Uuid.newBuilder(ownerUuid_).mergeFrom(value).buildPartial();
                     } else {
                         ownerUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     ownerUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -37828,13 +39366,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid owner_uuid = 1;</code>
              */
             public Builder clearOwnerUuid() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                ownerUuid_ = null;
-                if (ownerUuidBuilder_ != null) {
-                    ownerUuidBuilder_.dispose();
+                if (ownerUuidBuilder_ == null) {
+                    ownerUuid_ = null;
+                    onChanged();
+                } else {
+                    ownerUuid_ = null;
                     ownerUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -37842,7 +39380,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid owner_uuid = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getOwnerUuidBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getOwnerUuidFieldBuilder().getBuilder();
             }
@@ -37912,7 +39449,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 ownerString_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -37923,7 +39459,6 @@ public final class ContextOuterClass {
              */
             public Builder clearOwnerString() {
                 ownerString_ = getDefaultInstance().getOwnerString();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -37939,7 +39474,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 ownerString_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -37971,17 +39505,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceOwner parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceOwner(input, extensionRegistry);
             }
         };
 
@@ -38039,6 +39563,50 @@ public final class ContextOuterClass {
             return new SliceStatus();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceStatus(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                sliceStatus_ = rawValue;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
         }
@@ -38050,7 +39618,7 @@ public final class ContextOuterClass {
 
         public static final int SLICE_STATUS_FIELD_NUMBER = 1;
 
-        private int sliceStatus_ = 0;
+        private int sliceStatus_;
 
         /**
          * <code>.context.SliceStatusEnum slice_status = 1;</code>
@@ -38067,7 +39635,8 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
-            context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.forNumber(sliceStatus_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
             return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
         }
 
@@ -38089,7 +39658,7 @@ public final class ContextOuterClass {
             if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
                 output.writeEnum(1, sliceStatus_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -38101,7 +39670,7 @@ public final class ContextOuterClass {
             if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, sliceStatus_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -38117,7 +39686,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceStatus other = (context.ContextOuterClass.SliceStatus) obj;
             if (sliceStatus_ != other.sliceStatus_)
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -38131,7 +39700,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + SLICE_STATUS_FIELD_NUMBER;
             hash = (53 * hash) + sliceStatus_;
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -38225,16 +39794,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceStatus.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 sliceStatus_ = 0;
                 return this;
             }
@@ -38261,18 +39836,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceStatus buildPartial() {
                 context.ContextOuterClass.SliceStatus result = new context.ContextOuterClass.SliceStatus(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.sliceStatus_ = sliceStatus_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceStatus result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.sliceStatus_ = sliceStatus_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -38291,7 +39887,7 @@ public final class ContextOuterClass {
                 if (other.sliceStatus_ != 0) {
                     setSliceStatusValue(other.getSliceStatusValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -38303,47 +39899,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceStatus parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    sliceStatus_ = input.readEnum();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceStatus) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int sliceStatus_ = 0;
 
             /**
@@ -38362,7 +39931,6 @@ public final class ContextOuterClass {
              */
             public Builder setSliceStatusValue(int value) {
                 sliceStatus_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -38373,7 +39941,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
-                context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.forNumber(sliceStatus_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
                 return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
             }
 
@@ -38386,7 +39955,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000001;
                 sliceStatus_ = value.getNumber();
                 onChanged();
                 return this;
@@ -38397,7 +39965,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearSliceStatus() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 sliceStatus_ = 0;
                 onChanged();
                 return this;
@@ -38430,17 +39997,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceStatus parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceStatus(input, extensionRegistry);
             }
         };
 
@@ -38511,6 +40068,57 @@ public final class ContextOuterClass {
             return new SliceConfig();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                configRules_.add(input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    configRules_ = java.util.Collections.unmodifiableList(configRules_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
         }
@@ -38522,7 +40130,6 @@ public final class ContextOuterClass {
 
         public static final int CONFIG_RULES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
 
         /**
@@ -38583,7 +40190,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 output.writeMessage(1, configRules_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -38595,7 +40202,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < configRules_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -38611,7 +40218,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceConfig other = (context.ContextOuterClass.SliceConfig) obj;
             if (!getConfigRulesList().equals(other.getConfigRulesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -38627,7 +40234,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                 hash = (53 * hash) + getConfigRulesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -38721,23 +40328,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceConfig.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getConfigRulesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (configRulesBuilder_ == null) {
                     configRules_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    configRules_ = null;
                     configRulesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -38763,15 +40376,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceConfig buildPartial() {
                 context.ContextOuterClass.SliceConfig result = new context.ContextOuterClass.SliceConfig(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceConfig result) {
+                int from_bitField0_ = bitField0_;
                 if (configRulesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         configRules_ = java.util.Collections.unmodifiableList(configRules_);
@@ -38781,10 +40386,38 @@ public final class ContextOuterClass {
                 } else {
                     result.configRules_ = configRulesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceConfig result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -38824,7 +40457,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -38836,47 +40469,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceConfig parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
-                                    if (configRulesBuilder_ == null) {
-                                        ensureConfigRulesIsMutable();
-                                        configRules_.add(m);
-                                    } else {
-                                        configRulesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -39146,17 +40749,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceConfig(input, extensionRegistry);
             }
         };
 
@@ -39227,6 +40820,57 @@ public final class ContextOuterClass {
             return new SliceIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                sliceIds_.add(input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
         }
@@ -39238,7 +40882,6 @@ public final class ContextOuterClass {
 
         public static final int SLICE_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.SliceId> sliceIds_;
 
         /**
@@ -39299,7 +40942,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < sliceIds_.size(); i++) {
                 output.writeMessage(1, sliceIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -39311,7 +40954,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < sliceIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, sliceIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -39327,7 +40970,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceIdList other = (context.ContextOuterClass.SliceIdList) obj;
             if (!getSliceIdsList().equals(other.getSliceIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -39343,7 +40986,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getSliceIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -39437,23 +41080,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getSliceIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (sliceIdsBuilder_ == null) {
                     sliceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    sliceIds_ = null;
                     sliceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -39479,15 +41128,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceIdList buildPartial() {
                 context.ContextOuterClass.SliceIdList result = new context.ContextOuterClass.SliceIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (sliceIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
@@ -39497,10 +41138,38 @@ public final class ContextOuterClass {
                 } else {
                     result.sliceIds_ = sliceIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -39540,7 +41209,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -39552,47 +41221,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-                                    if (sliceIdsBuilder_ == null) {
-                                        ensureSliceIdsIsMutable();
-                                        sliceIds_.add(m);
-                                    } else {
-                                        sliceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -39862,17 +41501,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceIdList(input, extensionRegistry);
             }
         };
 
@@ -39943,6 +41572,57 @@ public final class ContextOuterClass {
             return new SliceList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    slices_ = new java.util.ArrayList<context.ContextOuterClass.Slice>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                slices_.add(input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    slices_ = java.util.Collections.unmodifiableList(slices_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
         }
@@ -39954,7 +41634,6 @@ public final class ContextOuterClass {
 
         public static final int SLICES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Slice> slices_;
 
         /**
@@ -40015,7 +41694,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < slices_.size(); i++) {
                 output.writeMessage(1, slices_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -40027,7 +41706,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < slices_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, slices_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -40043,7 +41722,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.SliceList other = (context.ContextOuterClass.SliceList) obj;
             if (!getSlicesList().equals(other.getSlicesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -40059,7 +41738,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICES_FIELD_NUMBER;
                 hash = (53 * hash) + getSlicesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -40153,23 +41832,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getSlicesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (slicesBuilder_ == null) {
                     slices_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    slices_ = null;
                     slicesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -40195,15 +41880,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceList buildPartial() {
                 context.ContextOuterClass.SliceList result = new context.ContextOuterClass.SliceList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceList result) {
+                int from_bitField0_ = bitField0_;
                 if (slicesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         slices_ = java.util.Collections.unmodifiableList(slices_);
@@ -40213,10 +41890,38 @@ public final class ContextOuterClass {
                 } else {
                     result.slices_ = slicesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -40256,7 +41961,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -40268,47 +41973,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Slice m = input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry);
-                                    if (slicesBuilder_ == null) {
-                                        ensureSlicesIsMutable();
-                                        slices_.add(m);
-                                    } else {
-                                        slicesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -40578,17 +42253,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceList(input, extensionRegistry);
             }
         };
 
@@ -40680,6 +42345,82 @@ public final class ContextOuterClass {
             return new SliceFilter();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceFilter(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.SliceIdList.Builder subBuilder = null;
+                                if (sliceIds_ != null) {
+                                    subBuilder = sliceIds_.toBuilder();
+                                }
+                                sliceIds_ = input.readMessage(context.ContextOuterClass.SliceIdList.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceIds_);
+                                    sliceIds_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                includeEndpointIds_ = input.readBool();
+                                break;
+                            }
+                        case 24:
+                            {
+                                includeConstraints_ = input.readBool();
+                                break;
+                            }
+                        case 32:
+                            {
+                                includeServiceIds_ = input.readBool();
+                                break;
+                            }
+                        case 40:
+                            {
+                                includeSubsliceIds_ = input.readBool();
+                                break;
+                            }
+                        case 48:
+                            {
+                                includeConfigRules_ = input.readBool();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
         }
@@ -40716,12 +42457,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdListOrBuilder getSliceIdsOrBuilder() {
-            return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
+            return getSliceIds();
         }
 
         public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
 
-        private boolean includeEndpointIds_ = false;
+        private boolean includeEndpointIds_;
 
         /**
          * <code>bool include_endpoint_ids = 2;</code>
@@ -40734,7 +42475,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;
 
-        private boolean includeConstraints_ = false;
+        private boolean includeConstraints_;
 
         /**
          * <code>bool include_constraints = 3;</code>
@@ -40747,7 +42488,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_SERVICE_IDS_FIELD_NUMBER = 4;
 
-        private boolean includeServiceIds_ = false;
+        private boolean includeServiceIds_;
 
         /**
          * <code>bool include_service_ids = 4;</code>
@@ -40760,7 +42501,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_SUBSLICE_IDS_FIELD_NUMBER = 5;
 
-        private boolean includeSubsliceIds_ = false;
+        private boolean includeSubsliceIds_;
 
         /**
          * <code>bool include_subslice_ids = 5;</code>
@@ -40773,7 +42514,7 @@ public final class ContextOuterClass {
 
         public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 6;
 
-        private boolean includeConfigRules_ = false;
+        private boolean includeConfigRules_;
 
         /**
          * <code>bool include_config_rules = 6;</code>
@@ -40817,7 +42558,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 output.writeBool(6, includeConfigRules_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -40844,7 +42585,7 @@ public final class ContextOuterClass {
             if (includeConfigRules_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(6, includeConfigRules_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -40874,7 +42615,7 @@ public final class ContextOuterClass {
                 return false;
             if (getIncludeConfigRules() != other.getIncludeConfigRules())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -40900,7 +42641,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeSubsliceIds());
             hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -40994,19 +42735,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceFilter.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                sliceIds_ = null;
-                if (sliceIdsBuilder_ != null) {
-                    sliceIdsBuilder_.dispose();
+                if (sliceIdsBuilder_ == null) {
+                    sliceIds_ = null;
+                } else {
+                    sliceIds_ = null;
                     sliceIdsBuilder_ = null;
                 }
                 includeEndpointIds_ = false;
@@ -41039,33 +42787,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceFilter buildPartial() {
                 context.ContextOuterClass.SliceFilter result = new context.ContextOuterClass.SliceFilter(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (sliceIdsBuilder_ == null) {
+                    result.sliceIds_ = sliceIds_;
+                } else {
+                    result.sliceIds_ = sliceIdsBuilder_.build();
                 }
+                result.includeEndpointIds_ = includeEndpointIds_;
+                result.includeConstraints_ = includeConstraints_;
+                result.includeServiceIds_ = includeServiceIds_;
+                result.includeSubsliceIds_ = includeSubsliceIds_;
+                result.includeConfigRules_ = includeConfigRules_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceFilter result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.sliceIds_ = sliceIdsBuilder_ == null ? sliceIds_ : sliceIdsBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.includeEndpointIds_ = includeEndpointIds_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.includeConstraints_ = includeConstraints_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.includeServiceIds_ = includeServiceIds_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.includeSubsliceIds_ = includeSubsliceIds_;
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.includeConfigRules_ = includeConfigRules_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -41099,7 +42862,7 @@ public final class ContextOuterClass {
                 if (other.getIncludeConfigRules() != false) {
                     setIncludeConfigRules(other.getIncludeConfigRules());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -41111,82 +42874,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceFilter parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getSliceIdsFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    includeEndpointIds_ = input.readBool();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 24:
-                                {
-                                    includeConstraints_ = input.readBool();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    includeServiceIds_ = input.readBool();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            case 40:
-                                {
-                                    includeSubsliceIds_ = input.readBool();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 40
-                            case 48:
-                                {
-                                    includeConfigRules_ = input.readBool();
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 48
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceFilter) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.SliceIdList sliceIds_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceIdList, context.ContextOuterClass.SliceIdList.Builder, context.ContextOuterClass.SliceIdListOrBuilder> sliceIdsBuilder_;
@@ -41196,7 +42897,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceIds field is set.
              */
             public boolean hasSliceIds() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return sliceIdsBuilder_ != null || sliceIds_ != null;
             }
 
             /**
@@ -41220,11 +42921,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceIds_ = value;
+                    onChanged();
                 } else {
                     sliceIdsBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -41234,11 +42934,10 @@ public final class ContextOuterClass {
             public Builder setSliceIds(context.ContextOuterClass.SliceIdList.Builder builderForValue) {
                 if (sliceIdsBuilder_ == null) {
                     sliceIds_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceIdsBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -41247,16 +42946,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceIds(context.ContextOuterClass.SliceIdList value) {
                 if (sliceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && sliceIds_ != null && sliceIds_ != context.ContextOuterClass.SliceIdList.getDefaultInstance()) {
-                        getSliceIdsBuilder().mergeFrom(value);
+                    if (sliceIds_ != null) {
+                        sliceIds_ = context.ContextOuterClass.SliceIdList.newBuilder(sliceIds_).mergeFrom(value).buildPartial();
                     } else {
                         sliceIds_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceIdsBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -41264,13 +42962,13 @@ public final class ContextOuterClass {
              * <code>.context.SliceIdList slice_ids = 1;</code>
              */
             public Builder clearSliceIds() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                sliceIds_ = null;
-                if (sliceIdsBuilder_ != null) {
-                    sliceIdsBuilder_.dispose();
+                if (sliceIdsBuilder_ == null) {
+                    sliceIds_ = null;
+                    onChanged();
+                } else {
+                    sliceIds_ = null;
                     sliceIdsBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -41278,7 +42976,6 @@ public final class ContextOuterClass {
              * <code>.context.SliceIdList slice_ids = 1;</code>
              */
             public context.ContextOuterClass.SliceIdList.Builder getSliceIdsBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSliceIdsFieldBuilder().getBuilder();
             }
@@ -41323,7 +43020,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeEndpointIds(boolean value) {
                 includeEndpointIds_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -41333,7 +43029,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeEndpointIds() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 includeEndpointIds_ = false;
                 onChanged();
                 return this;
@@ -41357,7 +43052,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConstraints(boolean value) {
                 includeConstraints_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -41367,7 +43061,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConstraints() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 includeConstraints_ = false;
                 onChanged();
                 return this;
@@ -41391,7 +43084,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeServiceIds(boolean value) {
                 includeServiceIds_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -41401,7 +43093,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeServiceIds() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 includeServiceIds_ = false;
                 onChanged();
                 return this;
@@ -41425,7 +43116,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeSubsliceIds(boolean value) {
                 includeSubsliceIds_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -41435,7 +43125,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeSubsliceIds() {
-                bitField0_ = (bitField0_ & ~0x00000010);
                 includeSubsliceIds_ = false;
                 onChanged();
                 return this;
@@ -41459,7 +43148,6 @@ public final class ContextOuterClass {
              */
             public Builder setIncludeConfigRules(boolean value) {
                 includeConfigRules_ = value;
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return this;
             }
@@ -41469,7 +43157,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIncludeConfigRules() {
-                bitField0_ = (bitField0_ & ~0x00000020);
                 includeConfigRules_ = false;
                 onChanged();
                 return this;
@@ -41502,17 +43189,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceFilter(input, extensionRegistry);
             }
         };
 
@@ -41591,6 +43268,70 @@ public final class ContextOuterClass {
             return new SliceEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SliceEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.SliceId.Builder subBuilder = null;
+                                if (sliceId_ != null) {
+                                    subBuilder = sliceId_.toBuilder();
+                                }
+                                sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceId_);
+                                    sliceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
         }
@@ -41627,7 +43368,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int SLICE_ID_FIELD_NUMBER = 2;
@@ -41657,7 +43398,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+            return getSliceId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -41681,7 +43422,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 output.writeMessage(2, getSliceId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -41696,7 +43437,7 @@ public final class ContextOuterClass {
             if (sliceId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSliceId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -41722,7 +43463,7 @@ public final class ContextOuterClass {
                 if (!getSliceId().equals(other.getSliceId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -41742,7 +43483,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getSliceId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -41836,24 +43577,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.SliceEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                sliceId_ = null;
-                if (sliceIdBuilder_ != null) {
-                    sliceIdBuilder_.dispose();
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = null;
+                } else {
+                    sliceId_ = null;
                     sliceIdBuilder_ = null;
                 }
                 return this;
@@ -41881,21 +43630,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.SliceEvent buildPartial() {
                 context.ContextOuterClass.SliceEvent result = new context.ContextOuterClass.SliceEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (sliceIdBuilder_ == null) {
+                    result.sliceId_ = sliceId_;
+                } else {
+                    result.sliceId_ = sliceIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.SliceEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -41917,7 +43693,7 @@ public final class ContextOuterClass {
                 if (other.hasSliceId()) {
                     mergeSliceId(other.getSliceId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -41929,54 +43705,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.SliceEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.SliceEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -41986,7 +43728,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -42010,11 +43752,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -42024,11 +43765,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -42037,16 +43777,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -42054,13 +43793,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -42068,7 +43807,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -42104,7 +43842,7 @@ public final class ContextOuterClass {
              * @return Whether the sliceId field is set.
              */
             public boolean hasSliceId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return sliceIdBuilder_ != null || sliceId_ != null;
             }
 
             /**
@@ -42128,11 +43866,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     sliceId_ = value;
+                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -42142,11 +43879,10 @@ public final class ContextOuterClass {
             public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
                 if (sliceIdBuilder_ == null) {
                     sliceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -42155,16 +43891,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
                 if (sliceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
-                        getSliceIdBuilder().mergeFrom(value);
+                    if (sliceId_ != null) {
+                        sliceId_ = context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
                     } else {
                         sliceId_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -42172,13 +43907,13 @@ public final class ContextOuterClass {
              * <code>.context.SliceId slice_id = 2;</code>
              */
             public Builder clearSliceId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                sliceId_ = null;
-                if (sliceIdBuilder_ != null) {
-                    sliceIdBuilder_.dispose();
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = null;
+                    onChanged();
+                } else {
+                    sliceId_ = null;
                     sliceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -42186,7 +43921,6 @@ public final class ContextOuterClass {
              * <code>.context.SliceId slice_id = 2;</code>
              */
             public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getSliceIdFieldBuilder().getBuilder();
             }
@@ -42240,17 +43974,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public SliceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SliceEvent(input, extensionRegistry);
             }
         };
 
@@ -42316,6 +44040,57 @@ public final class ContextOuterClass {
             return new ConnectionId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (connectionUuid_ != null) {
+                                    subBuilder = connectionUuid_.toBuilder();
+                                }
+                                connectionUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(connectionUuid_);
+                                    connectionUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
         }
@@ -42352,7 +44127,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
-            return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
+            return getConnectionUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -42373,7 +44148,7 @@ public final class ContextOuterClass {
             if (connectionUuid_ != null) {
                 output.writeMessage(1, getConnectionUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -42385,7 +44160,7 @@ public final class ContextOuterClass {
             if (connectionUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getConnectionUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -42405,7 +44180,7 @@ public final class ContextOuterClass {
                 if (!getConnectionUuid().equals(other.getConnectionUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -42421,7 +44196,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTION_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -42519,19 +44294,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                connectionUuid_ = null;
-                if (connectionUuidBuilder_ != null) {
-                    connectionUuidBuilder_.dispose();
+                if (connectionUuidBuilder_ == null) {
+                    connectionUuid_ = null;
+                } else {
+                    connectionUuid_ = null;
                     connectionUuidBuilder_ = null;
                 }
                 return this;
@@ -42559,18 +44341,43 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionId buildPartial() {
                 context.ContextOuterClass.ConnectionId result = new context.ContextOuterClass.ConnectionId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (connectionUuidBuilder_ == null) {
+                    result.connectionUuid_ = connectionUuid_;
+                } else {
+                    result.connectionUuid_ = connectionUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.connectionUuid_ = connectionUuidBuilder_ == null ? connectionUuid_ : connectionUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -42589,7 +44396,7 @@ public final class ContextOuterClass {
                 if (other.hasConnectionUuid()) {
                     mergeConnectionUuid(other.getConnectionUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -42601,47 +44408,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getConnectionUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid connectionUuid_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> connectionUuidBuilder_;
@@ -42651,7 +44431,7 @@ public final class ContextOuterClass {
              * @return Whether the connectionUuid field is set.
              */
             public boolean hasConnectionUuid() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return connectionUuidBuilder_ != null || connectionUuid_ != null;
             }
 
             /**
@@ -42675,11 +44455,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     connectionUuid_ = value;
+                    onChanged();
                 } else {
                     connectionUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -42689,11 +44468,10 @@ public final class ContextOuterClass {
             public Builder setConnectionUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (connectionUuidBuilder_ == null) {
                     connectionUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     connectionUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -42702,16 +44480,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeConnectionUuid(context.ContextOuterClass.Uuid value) {
                 if (connectionUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && connectionUuid_ != null && connectionUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getConnectionUuidBuilder().mergeFrom(value);
+                    if (connectionUuid_ != null) {
+                        connectionUuid_ = context.ContextOuterClass.Uuid.newBuilder(connectionUuid_).mergeFrom(value).buildPartial();
                     } else {
                         connectionUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     connectionUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -42719,13 +44496,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid connection_uuid = 1;</code>
              */
             public Builder clearConnectionUuid() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                connectionUuid_ = null;
-                if (connectionUuidBuilder_ != null) {
-                    connectionUuidBuilder_.dispose();
+                if (connectionUuidBuilder_ == null) {
+                    connectionUuid_ = null;
+                    onChanged();
+                } else {
+                    connectionUuid_ = null;
                     connectionUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -42733,7 +44510,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid connection_uuid = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getConnectionUuidBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getConnectionUuidFieldBuilder().getBuilder();
             }
@@ -42787,17 +44563,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionId(input, extensionRegistry);
             }
         };
 
@@ -42855,6 +44621,50 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L0();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionSettings_L0(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                lspSymbolicName_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
         }
@@ -42866,8 +44676,7 @@ public final class ContextOuterClass {
 
         public static final int LSP_SYMBOLIC_NAME_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object lspSymbolicName_ = "";
+        private volatile java.lang.Object lspSymbolicName_;
 
         /**
          * <code>string lsp_symbolic_name = 1;</code>
@@ -42917,10 +44726,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lspSymbolicName_)) {
+            if (!getLspSymbolicNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, lspSymbolicName_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -42929,10 +44738,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lspSymbolicName_)) {
+            if (!getLspSymbolicNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, lspSymbolicName_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -42948,7 +44757,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ConnectionSettings_L0 other = (context.ContextOuterClass.ConnectionSettings_L0) obj;
             if (!getLspSymbolicName().equals(other.getLspSymbolicName()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -42962,7 +44771,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + LSP_SYMBOLIC_NAME_FIELD_NUMBER;
             hash = (53 * hash) + getLspSymbolicName().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -43056,16 +44865,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L0.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 lspSymbolicName_ = "";
                 return this;
             }
@@ -43092,18 +44907,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L0 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L0 result = new context.ContextOuterClass.ConnectionSettings_L0(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.lspSymbolicName_ = lspSymbolicName_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L0 result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.lspSymbolicName_ = lspSymbolicName_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -43121,10 +44957,9 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getLspSymbolicName().isEmpty()) {
                     lspSymbolicName_ = other.lspSymbolicName_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -43136,47 +44971,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionSettings_L0 parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    lspSymbolicName_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L0) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private java.lang.Object lspSymbolicName_ = "";
 
             /**
@@ -43220,7 +45028,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 lspSymbolicName_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -43231,7 +45038,6 @@ public final class ContextOuterClass {
              */
             public Builder clearLspSymbolicName() {
                 lspSymbolicName_ = getDefaultInstance().getLspSymbolicName();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -43247,7 +45053,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 lspSymbolicName_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -43279,17 +45084,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L0 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionSettings_L0(input, extensionRegistry);
             }
         };
 
@@ -43384,6 +45179,76 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L2();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionSettings_L2(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                srcMacAddress_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                dstMacAddress_ = s;
+                                break;
+                            }
+                        case 24:
+                            {
+                                etherType_ = input.readUInt32();
+                                break;
+                            }
+                        case 32:
+                            {
+                                vlanId_ = input.readUInt32();
+                                break;
+                            }
+                        case 40:
+                            {
+                                mplsLabel_ = input.readUInt32();
+                                break;
+                            }
+                        case 48:
+                            {
+                                mplsTrafficClass_ = input.readUInt32();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
         }
@@ -43395,8 +45260,7 @@ public final class ContextOuterClass {
 
         public static final int SRC_MAC_ADDRESS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object srcMacAddress_ = "";
+        private volatile java.lang.Object srcMacAddress_;
 
         /**
          * <code>string src_mac_address = 1;</code>
@@ -43433,8 +45297,7 @@ public final class ContextOuterClass {
 
         public static final int DST_MAC_ADDRESS_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object dstMacAddress_ = "";
+        private volatile java.lang.Object dstMacAddress_;
 
         /**
          * <code>string dst_mac_address = 2;</code>
@@ -43471,7 +45334,7 @@ public final class ContextOuterClass {
 
         public static final int ETHER_TYPE_FIELD_NUMBER = 3;
 
-        private int etherType_ = 0;
+        private int etherType_;
 
         /**
          * <code>uint32 ether_type = 3;</code>
@@ -43484,7 +45347,7 @@ public final class ContextOuterClass {
 
         public static final int VLAN_ID_FIELD_NUMBER = 4;
 
-        private int vlanId_ = 0;
+        private int vlanId_;
 
         /**
          * <code>uint32 vlan_id = 4;</code>
@@ -43497,7 +45360,7 @@ public final class ContextOuterClass {
 
         public static final int MPLS_LABEL_FIELD_NUMBER = 5;
 
-        private int mplsLabel_ = 0;
+        private int mplsLabel_;
 
         /**
          * <code>uint32 mpls_label = 5;</code>
@@ -43510,7 +45373,7 @@ public final class ContextOuterClass {
 
         public static final int MPLS_TRAFFIC_CLASS_FIELD_NUMBER = 6;
 
-        private int mplsTrafficClass_ = 0;
+        private int mplsTrafficClass_;
 
         /**
          * <code>uint32 mpls_traffic_class = 6;</code>
@@ -43536,10 +45399,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcMacAddress_)) {
+            if (!getSrcMacAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcMacAddress_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstMacAddress_)) {
+            if (!getDstMacAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstMacAddress_);
             }
             if (etherType_ != 0) {
@@ -43554,7 +45417,7 @@ public final class ContextOuterClass {
             if (mplsTrafficClass_ != 0) {
                 output.writeUInt32(6, mplsTrafficClass_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -43563,10 +45426,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcMacAddress_)) {
+            if (!getSrcMacAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcMacAddress_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstMacAddress_)) {
+            if (!getDstMacAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstMacAddress_);
             }
             if (etherType_ != 0) {
@@ -43581,7 +45444,7 @@ public final class ContextOuterClass {
             if (mplsTrafficClass_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(6, mplsTrafficClass_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -43607,7 +45470,7 @@ public final class ContextOuterClass {
                 return false;
             if (getMplsTrafficClass() != other.getMplsTrafficClass())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -43631,7 +45494,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getMplsLabel();
             hash = (37 * hash) + MPLS_TRAFFIC_CLASS_FIELD_NUMBER;
             hash = (53 * hash) + getMplsTrafficClass();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -43725,16 +45588,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L2.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 srcMacAddress_ = "";
                 dstMacAddress_ = "";
                 etherType_ = 0;
@@ -43766,33 +45635,44 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L2 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L2 result = new context.ContextOuterClass.ConnectionSettings_L2(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.srcMacAddress_ = srcMacAddress_;
+                result.dstMacAddress_ = dstMacAddress_;
+                result.etherType_ = etherType_;
+                result.vlanId_ = vlanId_;
+                result.mplsLabel_ = mplsLabel_;
+                result.mplsTrafficClass_ = mplsTrafficClass_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L2 result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.srcMacAddress_ = srcMacAddress_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.dstMacAddress_ = dstMacAddress_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.etherType_ = etherType_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.vlanId_ = vlanId_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.mplsLabel_ = mplsLabel_;
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.mplsTrafficClass_ = mplsTrafficClass_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -43810,12 +45690,10 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getSrcMacAddress().isEmpty()) {
                     srcMacAddress_ = other.srcMacAddress_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getDstMacAddress().isEmpty()) {
                     dstMacAddress_ = other.dstMacAddress_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.getEtherType() != 0) {
@@ -43830,7 +45708,7 @@ public final class ContextOuterClass {
                 if (other.getMplsTrafficClass() != 0) {
                     setMplsTrafficClass(other.getMplsTrafficClass());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -43842,82 +45720,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionSettings_L2 parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    srcMacAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    dstMacAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 24:
-                                {
-                                    etherType_ = input.readUInt32();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    vlanId_ = input.readUInt32();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            case 40:
-                                {
-                                    mplsLabel_ = input.readUInt32();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 40
-                            case 48:
-                                {
-                                    mplsTrafficClass_ = input.readUInt32();
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 48
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L2) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private java.lang.Object srcMacAddress_ = "";
 
             /**
@@ -43961,7 +45777,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 srcMacAddress_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -43972,7 +45787,6 @@ public final class ContextOuterClass {
              */
             public Builder clearSrcMacAddress() {
                 srcMacAddress_ = getDefaultInstance().getSrcMacAddress();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -43988,7 +45802,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 srcMacAddress_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -44036,7 +45849,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 dstMacAddress_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -44047,7 +45859,6 @@ public final class ContextOuterClass {
              */
             public Builder clearDstMacAddress() {
                 dstMacAddress_ = getDefaultInstance().getDstMacAddress();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -44063,7 +45874,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 dstMacAddress_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -44086,7 +45896,6 @@ public final class ContextOuterClass {
              */
             public Builder setEtherType(int value) {
                 etherType_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -44096,7 +45905,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearEtherType() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 etherType_ = 0;
                 onChanged();
                 return this;
@@ -44120,7 +45928,6 @@ public final class ContextOuterClass {
              */
             public Builder setVlanId(int value) {
                 vlanId_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -44130,7 +45937,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearVlanId() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 vlanId_ = 0;
                 onChanged();
                 return this;
@@ -44154,7 +45960,6 @@ public final class ContextOuterClass {
              */
             public Builder setMplsLabel(int value) {
                 mplsLabel_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -44164,7 +45969,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearMplsLabel() {
-                bitField0_ = (bitField0_ & ~0x00000010);
                 mplsLabel_ = 0;
                 onChanged();
                 return this;
@@ -44188,7 +45992,6 @@ public final class ContextOuterClass {
              */
             public Builder setMplsTrafficClass(int value) {
                 mplsTrafficClass_ = value;
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return this;
             }
@@ -44198,7 +46001,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearMplsTrafficClass() {
-                bitField0_ = (bitField0_ & ~0x00000020);
                 mplsTrafficClass_ = 0;
                 onChanged();
                 return this;
@@ -44231,17 +46033,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L2 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionSettings_L2(input, extensionRegistry);
             }
         };
 
@@ -44330,6 +46122,71 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L3();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionSettings_L3(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                srcIpAddress_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                dstIpAddress_ = s;
+                                break;
+                            }
+                        case 24:
+                            {
+                                dscp_ = input.readUInt32();
+                                break;
+                            }
+                        case 32:
+                            {
+                                protocol_ = input.readUInt32();
+                                break;
+                            }
+                        case 40:
+                            {
+                                ttl_ = input.readUInt32();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
         }
@@ -44341,8 +46198,7 @@ public final class ContextOuterClass {
 
         public static final int SRC_IP_ADDRESS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object srcIpAddress_ = "";
+        private volatile java.lang.Object srcIpAddress_;
 
         /**
          * <code>string src_ip_address = 1;</code>
@@ -44379,8 +46235,7 @@ public final class ContextOuterClass {
 
         public static final int DST_IP_ADDRESS_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object dstIpAddress_ = "";
+        private volatile java.lang.Object dstIpAddress_;
 
         /**
          * <code>string dst_ip_address = 2;</code>
@@ -44417,7 +46272,7 @@ public final class ContextOuterClass {
 
         public static final int DSCP_FIELD_NUMBER = 3;
 
-        private int dscp_ = 0;
+        private int dscp_;
 
         /**
          * <code>uint32 dscp = 3;</code>
@@ -44430,7 +46285,7 @@ public final class ContextOuterClass {
 
         public static final int PROTOCOL_FIELD_NUMBER = 4;
 
-        private int protocol_ = 0;
+        private int protocol_;
 
         /**
          * <code>uint32 protocol = 4;</code>
@@ -44443,7 +46298,7 @@ public final class ContextOuterClass {
 
         public static final int TTL_FIELD_NUMBER = 5;
 
-        private int ttl_ = 0;
+        private int ttl_;
 
         /**
          * <code>uint32 ttl = 5;</code>
@@ -44469,10 +46324,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcIpAddress_)) {
+            if (!getSrcIpAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcIpAddress_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstIpAddress_)) {
+            if (!getDstIpAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstIpAddress_);
             }
             if (dscp_ != 0) {
@@ -44484,7 +46339,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 output.writeUInt32(5, ttl_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -44493,10 +46348,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcIpAddress_)) {
+            if (!getSrcIpAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcIpAddress_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstIpAddress_)) {
+            if (!getDstIpAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstIpAddress_);
             }
             if (dscp_ != 0) {
@@ -44508,7 +46363,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(5, ttl_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -44532,7 +46387,7 @@ public final class ContextOuterClass {
                 return false;
             if (getTtl() != other.getTtl())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -44554,7 +46409,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getProtocol();
             hash = (37 * hash) + TTL_FIELD_NUMBER;
             hash = (53 * hash) + getTtl();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -44648,16 +46503,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L3.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 srcIpAddress_ = "";
                 dstIpAddress_ = "";
                 dscp_ = 0;
@@ -44688,30 +46549,43 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L3 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L3 result = new context.ContextOuterClass.ConnectionSettings_L3(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.srcIpAddress_ = srcIpAddress_;
+                result.dstIpAddress_ = dstIpAddress_;
+                result.dscp_ = dscp_;
+                result.protocol_ = protocol_;
+                result.ttl_ = ttl_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L3 result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.srcIpAddress_ = srcIpAddress_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.dstIpAddress_ = dstIpAddress_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.dscp_ = dscp_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.protocol_ = protocol_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.ttl_ = ttl_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -44729,12 +46603,10 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getSrcIpAddress().isEmpty()) {
                     srcIpAddress_ = other.srcIpAddress_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getDstIpAddress().isEmpty()) {
                     dstIpAddress_ = other.dstIpAddress_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.getDscp() != 0) {
@@ -44746,7 +46618,7 @@ public final class ContextOuterClass {
                 if (other.getTtl() != 0) {
                     setTtl(other.getTtl());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -44758,75 +46630,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionSettings_L3 parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    srcIpAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    dstIpAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 24:
-                                {
-                                    dscp_ = input.readUInt32();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    protocol_ = input.readUInt32();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            case 40:
-                                {
-                                    ttl_ = input.readUInt32();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 40
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L3) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private java.lang.Object srcIpAddress_ = "";
 
             /**
@@ -44870,7 +46687,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 srcIpAddress_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -44881,7 +46697,6 @@ public final class ContextOuterClass {
              */
             public Builder clearSrcIpAddress() {
                 srcIpAddress_ = getDefaultInstance().getSrcIpAddress();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -44897,7 +46712,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 srcIpAddress_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -44945,7 +46759,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 dstIpAddress_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -44956,7 +46769,6 @@ public final class ContextOuterClass {
              */
             public Builder clearDstIpAddress() {
                 dstIpAddress_ = getDefaultInstance().getDstIpAddress();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -44972,7 +46784,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 dstIpAddress_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -44995,7 +46806,6 @@ public final class ContextOuterClass {
              */
             public Builder setDscp(int value) {
                 dscp_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -45005,7 +46815,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDscp() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 dscp_ = 0;
                 onChanged();
                 return this;
@@ -45029,7 +46838,6 @@ public final class ContextOuterClass {
              */
             public Builder setProtocol(int value) {
                 protocol_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -45039,7 +46847,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearProtocol() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 protocol_ = 0;
                 onChanged();
                 return this;
@@ -45063,7 +46870,6 @@ public final class ContextOuterClass {
              */
             public Builder setTtl(int value) {
                 ttl_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -45073,7 +46879,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTtl() {
-                bitField0_ = (bitField0_ & ~0x00000010);
                 ttl_ = 0;
                 onChanged();
                 return this;
@@ -45106,17 +46911,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L3 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionSettings_L3(input, extensionRegistry);
             }
         };
 
@@ -45185,6 +46980,64 @@ public final class ContextOuterClass {
             return new ConnectionSettings_L4();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionSettings_L4(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                srcPort_ = input.readUInt32();
+                                break;
+                            }
+                        case 16:
+                            {
+                                dstPort_ = input.readUInt32();
+                                break;
+                            }
+                        case 24:
+                            {
+                                tcpFlags_ = input.readUInt32();
+                                break;
+                            }
+                        case 32:
+                            {
+                                ttl_ = input.readUInt32();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
         }
@@ -45196,7 +47049,7 @@ public final class ContextOuterClass {
 
         public static final int SRC_PORT_FIELD_NUMBER = 1;
 
-        private int srcPort_ = 0;
+        private int srcPort_;
 
         /**
          * <code>uint32 src_port = 1;</code>
@@ -45209,7 +47062,7 @@ public final class ContextOuterClass {
 
         public static final int DST_PORT_FIELD_NUMBER = 2;
 
-        private int dstPort_ = 0;
+        private int dstPort_;
 
         /**
          * <code>uint32 dst_port = 2;</code>
@@ -45222,7 +47075,7 @@ public final class ContextOuterClass {
 
         public static final int TCP_FLAGS_FIELD_NUMBER = 3;
 
-        private int tcpFlags_ = 0;
+        private int tcpFlags_;
 
         /**
          * <code>uint32 tcp_flags = 3;</code>
@@ -45235,7 +47088,7 @@ public final class ContextOuterClass {
 
         public static final int TTL_FIELD_NUMBER = 4;
 
-        private int ttl_ = 0;
+        private int ttl_;
 
         /**
          * <code>uint32 ttl = 4;</code>
@@ -45273,7 +47126,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 output.writeUInt32(4, ttl_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -45294,7 +47147,7 @@ public final class ContextOuterClass {
             if (ttl_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(4, ttl_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -45316,7 +47169,7 @@ public final class ContextOuterClass {
                 return false;
             if (getTtl() != other.getTtl())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -45336,7 +47189,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getTcpFlags();
             hash = (37 * hash) + TTL_FIELD_NUMBER;
             hash = (53 * hash) + getTtl();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -45430,16 +47283,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings_L4.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 srcPort_ = 0;
                 dstPort_ = 0;
                 tcpFlags_ = 0;
@@ -45469,27 +47328,42 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings_L4 buildPartial() {
                 context.ContextOuterClass.ConnectionSettings_L4 result = new context.ContextOuterClass.ConnectionSettings_L4(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.srcPort_ = srcPort_;
+                result.dstPort_ = dstPort_;
+                result.tcpFlags_ = tcpFlags_;
+                result.ttl_ = ttl_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L4 result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.srcPort_ = srcPort_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.dstPort_ = dstPort_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.tcpFlags_ = tcpFlags_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.ttl_ = ttl_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -45517,7 +47391,7 @@ public final class ContextOuterClass {
                 if (other.getTtl() != 0) {
                     setTtl(other.getTtl());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -45529,68 +47403,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionSettings_L4 parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    srcPort_ = input.readUInt32();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 16:
-                                {
-                                    dstPort_ = input.readUInt32();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 24:
-                                {
-                                    tcpFlags_ = input.readUInt32();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    ttl_ = input.readUInt32();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionSettings_L4) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int srcPort_;
 
             /**
@@ -45609,7 +47435,6 @@ public final class ContextOuterClass {
              */
             public Builder setSrcPort(int value) {
                 srcPort_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -45619,7 +47444,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearSrcPort() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 srcPort_ = 0;
                 onChanged();
                 return this;
@@ -45643,7 +47467,6 @@ public final class ContextOuterClass {
              */
             public Builder setDstPort(int value) {
                 dstPort_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -45653,7 +47476,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDstPort() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 dstPort_ = 0;
                 onChanged();
                 return this;
@@ -45677,7 +47499,6 @@ public final class ContextOuterClass {
              */
             public Builder setTcpFlags(int value) {
                 tcpFlags_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -45687,7 +47508,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTcpFlags() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 tcpFlags_ = 0;
                 onChanged();
                 return this;
@@ -45711,7 +47531,6 @@ public final class ContextOuterClass {
              */
             public Builder setTtl(int value) {
                 ttl_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -45721,7 +47540,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearTtl() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 ttl_ = 0;
                 onChanged();
                 return this;
@@ -45754,17 +47572,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings_L4 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionSettings_L4(input, extensionRegistry);
             }
         };
 
@@ -45877,6 +47685,96 @@ public final class ContextOuterClass {
             return new ConnectionSettings();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionSettings(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ConnectionSettings_L0.Builder subBuilder = null;
+                                if (l0_ != null) {
+                                    subBuilder = l0_.toBuilder();
+                                }
+                                l0_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L0.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(l0_);
+                                    l0_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.ConnectionSettings_L2.Builder subBuilder = null;
+                                if (l2_ != null) {
+                                    subBuilder = l2_.toBuilder();
+                                }
+                                l2_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L2.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(l2_);
+                                    l2_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 26:
+                            {
+                                context.ContextOuterClass.ConnectionSettings_L3.Builder subBuilder = null;
+                                if (l3_ != null) {
+                                    subBuilder = l3_.toBuilder();
+                                }
+                                l3_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L3.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(l3_);
+                                    l3_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 34:
+                            {
+                                context.ContextOuterClass.ConnectionSettings_L4.Builder subBuilder = null;
+                                if (l4_ != null) {
+                                    subBuilder = l4_.toBuilder();
+                                }
+                                l4_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L4.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(l4_);
+                                    l4_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
         }
@@ -45913,7 +47811,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
-            return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
+            return getL0();
         }
 
         public static final int L2_FIELD_NUMBER = 2;
@@ -45943,7 +47841,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder() {
-            return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
+            return getL2();
         }
 
         public static final int L3_FIELD_NUMBER = 3;
@@ -45973,7 +47871,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
-            return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
+            return getL3();
         }
 
         public static final int L4_FIELD_NUMBER = 4;
@@ -46003,7 +47901,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
-            return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
+            return getL4();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -46033,7 +47931,7 @@ public final class ContextOuterClass {
             if (l4_ != null) {
                 output.writeMessage(4, getL4());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -46054,7 +47952,7 @@ public final class ContextOuterClass {
             if (l4_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getL4());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -46092,7 +47990,7 @@ public final class ContextOuterClass {
                 if (!getL4().equals(other.getL4()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -46120,7 +48018,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + L4_FIELD_NUMBER;
                 hash = (53 * hash) + getL4().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -46214,34 +48112,44 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionSettings.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                l0_ = null;
-                if (l0Builder_ != null) {
-                    l0Builder_.dispose();
+                if (l0Builder_ == null) {
+                    l0_ = null;
+                } else {
+                    l0_ = null;
                     l0Builder_ = null;
                 }
-                l2_ = null;
-                if (l2Builder_ != null) {
-                    l2Builder_.dispose();
+                if (l2Builder_ == null) {
+                    l2_ = null;
+                } else {
+                    l2_ = null;
                     l2Builder_ = null;
                 }
-                l3_ = null;
-                if (l3Builder_ != null) {
-                    l3Builder_.dispose();
+                if (l3Builder_ == null) {
+                    l3_ = null;
+                } else {
+                    l3_ = null;
                     l3Builder_ = null;
                 }
-                l4_ = null;
-                if (l4Builder_ != null) {
-                    l4Builder_.dispose();
+                if (l4Builder_ == null) {
+                    l4_ = null;
+                } else {
+                    l4_ = null;
                     l4Builder_ = null;
                 }
                 return this;
@@ -46269,27 +48177,58 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionSettings buildPartial() {
                 context.ContextOuterClass.ConnectionSettings result = new context.ContextOuterClass.ConnectionSettings(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (l0Builder_ == null) {
+                    result.l0_ = l0_;
+                } else {
+                    result.l0_ = l0Builder_.build();
+                }
+                if (l2Builder_ == null) {
+                    result.l2_ = l2_;
+                } else {
+                    result.l2_ = l2Builder_.build();
+                }
+                if (l3Builder_ == null) {
+                    result.l3_ = l3_;
+                } else {
+                    result.l3_ = l3Builder_.build();
+                }
+                if (l4Builder_ == null) {
+                    result.l4_ = l4_;
+                } else {
+                    result.l4_ = l4Builder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionSettings result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.l0_ = l0Builder_ == null ? l0_ : l0Builder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.l2_ = l2Builder_ == null ? l2_ : l2Builder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.l3_ = l3Builder_ == null ? l3_ : l3Builder_.build();
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.l4_ = l4Builder_ == null ? l4_ : l4Builder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -46317,7 +48256,7 @@ public final class ContextOuterClass {
                 if (other.hasL4()) {
                     mergeL4(other.getL4());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -46329,68 +48268,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionSettings parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getL0FieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getL2FieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getL3FieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    input.readMessage(getL4FieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionSettings) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.ConnectionSettings_L0 l0_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder> l0Builder_;
@@ -46400,7 +48291,7 @@ public final class ContextOuterClass {
              * @return Whether the l0 field is set.
              */
             public boolean hasL0() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return l0Builder_ != null || l0_ != null;
             }
 
             /**
@@ -46424,11 +48315,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l0_ = value;
+                    onChanged();
                 } else {
                     l0Builder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -46438,11 +48328,10 @@ public final class ContextOuterClass {
             public Builder setL0(context.ContextOuterClass.ConnectionSettings_L0.Builder builderForValue) {
                 if (l0Builder_ == null) {
                     l0_ = builderForValue.build();
+                    onChanged();
                 } else {
                     l0Builder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -46451,16 +48340,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
                 if (l0Builder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && l0_ != null && l0_ != context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance()) {
-                        getL0Builder().mergeFrom(value);
+                    if (l0_ != null) {
+                        l0_ = context.ContextOuterClass.ConnectionSettings_L0.newBuilder(l0_).mergeFrom(value).buildPartial();
                     } else {
                         l0_ = value;
                     }
+                    onChanged();
                 } else {
                     l0Builder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -46468,13 +48356,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
              */
             public Builder clearL0() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                l0_ = null;
-                if (l0Builder_ != null) {
-                    l0Builder_.dispose();
+                if (l0Builder_ == null) {
+                    l0_ = null;
+                    onChanged();
+                } else {
+                    l0_ = null;
                     l0Builder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -46482,7 +48370,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
              */
             public context.ContextOuterClass.ConnectionSettings_L0.Builder getL0Builder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getL0FieldBuilder().getBuilder();
             }
@@ -46518,7 +48405,7 @@ public final class ContextOuterClass {
              * @return Whether the l2 field is set.
              */
             public boolean hasL2() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return l2Builder_ != null || l2_ != null;
             }
 
             /**
@@ -46542,11 +48429,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l2_ = value;
+                    onChanged();
                 } else {
                     l2Builder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -46556,11 +48442,10 @@ public final class ContextOuterClass {
             public Builder setL2(context.ContextOuterClass.ConnectionSettings_L2.Builder builderForValue) {
                 if (l2Builder_ == null) {
                     l2_ = builderForValue.build();
+                    onChanged();
                 } else {
                     l2Builder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -46569,16 +48454,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
                 if (l2Builder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && l2_ != null && l2_ != context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance()) {
-                        getL2Builder().mergeFrom(value);
+                    if (l2_ != null) {
+                        l2_ = context.ContextOuterClass.ConnectionSettings_L2.newBuilder(l2_).mergeFrom(value).buildPartial();
                     } else {
                         l2_ = value;
                     }
+                    onChanged();
                 } else {
                     l2Builder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -46586,13 +48470,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
              */
             public Builder clearL2() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                l2_ = null;
-                if (l2Builder_ != null) {
-                    l2Builder_.dispose();
+                if (l2Builder_ == null) {
+                    l2_ = null;
+                    onChanged();
+                } else {
+                    l2_ = null;
                     l2Builder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -46600,7 +48484,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
              */
             public context.ContextOuterClass.ConnectionSettings_L2.Builder getL2Builder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getL2FieldBuilder().getBuilder();
             }
@@ -46636,7 +48519,7 @@ public final class ContextOuterClass {
              * @return Whether the l3 field is set.
              */
             public boolean hasL3() {
-                return ((bitField0_ & 0x00000004) != 0);
+                return l3Builder_ != null || l3_ != null;
             }
 
             /**
@@ -46660,11 +48543,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l3_ = value;
+                    onChanged();
                 } else {
                     l3Builder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -46674,11 +48556,10 @@ public final class ContextOuterClass {
             public Builder setL3(context.ContextOuterClass.ConnectionSettings_L3.Builder builderForValue) {
                 if (l3Builder_ == null) {
                     l3_ = builderForValue.build();
+                    onChanged();
                 } else {
                     l3Builder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -46687,16 +48568,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
                 if (l3Builder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0) && l3_ != null && l3_ != context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance()) {
-                        getL3Builder().mergeFrom(value);
+                    if (l3_ != null) {
+                        l3_ = context.ContextOuterClass.ConnectionSettings_L3.newBuilder(l3_).mergeFrom(value).buildPartial();
                     } else {
                         l3_ = value;
                     }
+                    onChanged();
                 } else {
                     l3Builder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -46704,13 +48584,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
              */
             public Builder clearL3() {
-                bitField0_ = (bitField0_ & ~0x00000004);
-                l3_ = null;
-                if (l3Builder_ != null) {
-                    l3Builder_.dispose();
+                if (l3Builder_ == null) {
+                    l3_ = null;
+                    onChanged();
+                } else {
+                    l3_ = null;
                     l3Builder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -46718,7 +48598,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
              */
             public context.ContextOuterClass.ConnectionSettings_L3.Builder getL3Builder() {
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return getL3FieldBuilder().getBuilder();
             }
@@ -46754,7 +48633,7 @@ public final class ContextOuterClass {
              * @return Whether the l4 field is set.
              */
             public boolean hasL4() {
-                return ((bitField0_ & 0x00000008) != 0);
+                return l4Builder_ != null || l4_ != null;
             }
 
             /**
@@ -46778,11 +48657,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     l4_ = value;
+                    onChanged();
                 } else {
                     l4Builder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -46792,11 +48670,10 @@ public final class ContextOuterClass {
             public Builder setL4(context.ContextOuterClass.ConnectionSettings_L4.Builder builderForValue) {
                 if (l4Builder_ == null) {
                     l4_ = builderForValue.build();
+                    onChanged();
                 } else {
                     l4Builder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -46805,16 +48682,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
                 if (l4Builder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0) && l4_ != null && l4_ != context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance()) {
-                        getL4Builder().mergeFrom(value);
+                    if (l4_ != null) {
+                        l4_ = context.ContextOuterClass.ConnectionSettings_L4.newBuilder(l4_).mergeFrom(value).buildPartial();
                     } else {
                         l4_ = value;
                     }
+                    onChanged();
                 } else {
                     l4Builder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -46822,13 +48698,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
              */
             public Builder clearL4() {
-                bitField0_ = (bitField0_ & ~0x00000008);
-                l4_ = null;
-                if (l4Builder_ != null) {
-                    l4Builder_.dispose();
+                if (l4Builder_ == null) {
+                    l4_ = null;
+                    onChanged();
+                } else {
+                    l4_ = null;
                     l4Builder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -46836,7 +48712,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
              */
             public context.ContextOuterClass.ConnectionSettings_L4.Builder getL4Builder() {
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return getL4FieldBuilder().getBuilder();
             }
@@ -46890,17 +48765,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionSettings parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionSettings(input, extensionRegistry);
             }
         };
 
@@ -47048,6 +48913,108 @@ public final class ContextOuterClass {
             return new Connection();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Connection(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
+                                if (connectionId_ != null) {
+                                    subBuilder = connectionId_.toBuilder();
+                                }
+                                connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(connectionId_);
+                                    connectionId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
+                                if (serviceId_ != null) {
+                                    subBuilder = serviceId_.toBuilder();
+                                }
+                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceId_);
+                                    serviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                pathHopsEndpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                subServiceIds_.add(input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 42:
+                            {
+                                context.ContextOuterClass.ConnectionSettings.Builder subBuilder = null;
+                                if (settings_ != null) {
+                                    subBuilder = settings_.toBuilder();
+                                }
+                                settings_ = input.readMessage(context.ContextOuterClass.ConnectionSettings.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(settings_);
+                                    settings_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Connection_descriptor;
         }
@@ -47084,7 +49051,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+            return getConnectionId();
         }
 
         public static final int SERVICE_ID_FIELD_NUMBER = 2;
@@ -47114,12 +49081,11 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+            return getServiceId();
         }
 
         public static final int PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_;
 
         /**
@@ -47164,7 +49130,6 @@ public final class ContextOuterClass {
 
         public static final int SUB_SERVICE_IDS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_;
 
         /**
@@ -47234,7 +49199,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
-            return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
+            return getSettings();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -47267,7 +49232,7 @@ public final class ContextOuterClass {
             if (settings_ != null) {
                 output.writeMessage(5, getSettings());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -47291,7 +49256,7 @@ public final class ContextOuterClass {
             if (settings_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getSettings());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -47327,7 +49292,7 @@ public final class ContextOuterClass {
                 if (!getSettings().equals(other.getSettings()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -47359,7 +49324,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + SETTINGS_FIELD_NUMBER;
                 hash = (53 * hash) + getSettings().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -47453,43 +49418,52 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Connection.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getPathHopsEndpointIdsFieldBuilder();
+                    getSubServiceIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                connectionId_ = null;
-                if (connectionIdBuilder_ != null) {
-                    connectionIdBuilder_.dispose();
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = null;
+                } else {
+                    connectionId_ = null;
                     connectionIdBuilder_ = null;
                 }
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
                 if (pathHopsEndpointIdsBuilder_ == null) {
                     pathHopsEndpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    pathHopsEndpointIds_ = null;
                     pathHopsEndpointIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 if (subServiceIdsBuilder_ == null) {
                     subServiceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    subServiceIds_ = null;
                     subServiceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
-                settings_ = null;
-                if (settingsBuilder_ != null) {
-                    settingsBuilder_.dispose();
+                if (settingsBuilder_ == null) {
+                    settings_ = null;
+                } else {
+                    settings_ = null;
                     settingsBuilder_ = null;
                 }
                 return this;
@@ -47517,46 +49491,72 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Connection buildPartial() {
                 context.ContextOuterClass.Connection result = new context.ContextOuterClass.Connection(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (connectionIdBuilder_ == null) {
+                    result.connectionId_ = connectionId_;
+                } else {
+                    result.connectionId_ = connectionIdBuilder_.build();
+                }
+                if (serviceIdBuilder_ == null) {
+                    result.serviceId_ = serviceId_;
+                } else {
+                    result.serviceId_ = serviceIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Connection result) {
                 if (pathHopsEndpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.pathHopsEndpointIds_ = pathHopsEndpointIds_;
                 } else {
                     result.pathHopsEndpointIds_ = pathHopsEndpointIdsBuilder_.build();
                 }
                 if (subServiceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.subServiceIds_ = subServiceIds_;
                 } else {
                     result.subServiceIds_ = subServiceIdsBuilder_.build();
                 }
+                if (settingsBuilder_ == null) {
+                    result.settings_ = settings_;
+                } else {
+                    result.settings_ = settingsBuilder_.build();
+                }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Connection result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.settings_ = settingsBuilder_ == null ? settings_ : settingsBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -47582,7 +49582,7 @@ public final class ContextOuterClass {
                     if (!other.pathHopsEndpointIds_.isEmpty()) {
                         if (pathHopsEndpointIds_.isEmpty()) {
                             pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensurePathHopsEndpointIdsIsMutable();
                             pathHopsEndpointIds_.addAll(other.pathHopsEndpointIds_);
@@ -47595,7 +49595,7 @@ public final class ContextOuterClass {
                             pathHopsEndpointIdsBuilder_.dispose();
                             pathHopsEndpointIdsBuilder_ = null;
                             pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             pathHopsEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getPathHopsEndpointIdsFieldBuilder() : null;
                         } else {
                             pathHopsEndpointIdsBuilder_.addAllMessages(other.pathHopsEndpointIds_);
@@ -47606,7 +49606,7 @@ public final class ContextOuterClass {
                     if (!other.subServiceIds_.isEmpty()) {
                         if (subServiceIds_.isEmpty()) {
                             subServiceIds_ = other.subServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureSubServiceIdsIsMutable();
                             subServiceIds_.addAll(other.subServiceIds_);
@@ -47619,7 +49619,7 @@ public final class ContextOuterClass {
                             subServiceIdsBuilder_.dispose();
                             subServiceIdsBuilder_ = null;
                             subServiceIds_ = other.subServiceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             subServiceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSubServiceIdsFieldBuilder() : null;
                         } else {
                             subServiceIdsBuilder_.addAllMessages(other.subServiceIds_);
@@ -47629,7 +49629,7 @@ public final class ContextOuterClass {
                 if (other.hasSettings()) {
                     mergeSettings(other.getSettings());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -47641,80 +49641,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Connection parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                    if (pathHopsEndpointIdsBuilder_ == null) {
-                                        ensurePathHopsEndpointIdsIsMutable();
-                                        pathHopsEndpointIds_.add(m);
-                                    } else {
-                                        pathHopsEndpointIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-                                    if (subServiceIdsBuilder_ == null) {
-                                        ensureSubServiceIdsIsMutable();
-                                        subServiceIds_.add(m);
-                                    } else {
-                                        subServiceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    input.readMessage(getSettingsFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Connection) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -47729,7 +49666,7 @@ public final class ContextOuterClass {
              * @return Whether the connectionId field is set.
              */
             public boolean hasConnectionId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return connectionIdBuilder_ != null || connectionId_ != null;
             }
 
             /**
@@ -47753,11 +49690,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     connectionId_ = value;
+                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -47767,11 +49703,10 @@ public final class ContextOuterClass {
             public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                 if (connectionIdBuilder_ == null) {
                     connectionId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -47780,16 +49715,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
                 if (connectionIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
-                        getConnectionIdBuilder().mergeFrom(value);
+                    if (connectionId_ != null) {
+                        connectionId_ = context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
                     } else {
                         connectionId_ = value;
                     }
+                    onChanged();
                 } else {
                     connectionIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -47797,13 +49731,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionId connection_id = 1;</code>
              */
             public Builder clearConnectionId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                connectionId_ = null;
-                if (connectionIdBuilder_ != null) {
-                    connectionIdBuilder_.dispose();
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = null;
+                    onChanged();
+                } else {
+                    connectionId_ = null;
                     connectionIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -47811,7 +49745,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionId connection_id = 1;</code>
              */
             public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getConnectionIdFieldBuilder().getBuilder();
             }
@@ -47847,7 +49780,7 @@ public final class ContextOuterClass {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return serviceIdBuilder_ != null || serviceId_ != null;
             }
 
             /**
@@ -47871,11 +49804,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -47885,11 +49817,10 @@ public final class ContextOuterClass {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -47898,16 +49829,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
-                        getServiceIdBuilder().mergeFrom(value);
+                    if (serviceId_ != null) {
+                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
                     } else {
                         serviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -47915,13 +49845,13 @@ public final class ContextOuterClass {
              * <code>.context.ServiceId service_id = 2;</code>
              */
             public Builder clearServiceId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                    onChanged();
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -47929,7 +49859,6 @@ public final class ContextOuterClass {
              * <code>.context.ServiceId service_id = 2;</code>
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -47959,9 +49888,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_ = java.util.Collections.emptyList();
 
             private void ensurePathHopsEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(pathHopsEndpointIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -48113,7 +50042,7 @@ public final class ContextOuterClass {
             public Builder clearPathHopsEndpointIds() {
                 if (pathHopsEndpointIdsBuilder_ == null) {
                     pathHopsEndpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     pathHopsEndpointIdsBuilder_.clear();
@@ -48187,7 +50116,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getPathHopsEndpointIdsFieldBuilder() {
                 if (pathHopsEndpointIdsBuilder_ == null) {
-                    pathHopsEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(pathHopsEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    pathHopsEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(pathHopsEndpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     pathHopsEndpointIds_ = null;
                 }
                 return pathHopsEndpointIdsBuilder_;
@@ -48196,9 +50125,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_ = java.util.Collections.emptyList();
 
             private void ensureSubServiceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(subServiceIds_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -48350,7 +50279,7 @@ public final class ContextOuterClass {
             public Builder clearSubServiceIds() {
                 if (subServiceIdsBuilder_ == null) {
                     subServiceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     subServiceIdsBuilder_.clear();
@@ -48424,7 +50353,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getSubServiceIdsFieldBuilder() {
                 if (subServiceIdsBuilder_ == null) {
-                    subServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(subServiceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    subServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(subServiceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     subServiceIds_ = null;
                 }
                 return subServiceIdsBuilder_;
@@ -48439,7 +50368,7 @@ public final class ContextOuterClass {
              * @return Whether the settings field is set.
              */
             public boolean hasSettings() {
-                return ((bitField0_ & 0x00000010) != 0);
+                return settingsBuilder_ != null || settings_ != null;
             }
 
             /**
@@ -48463,11 +50392,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     settings_ = value;
+                    onChanged();
                 } else {
                     settingsBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -48477,11 +50405,10 @@ public final class ContextOuterClass {
             public Builder setSettings(context.ContextOuterClass.ConnectionSettings.Builder builderForValue) {
                 if (settingsBuilder_ == null) {
                     settings_ = builderForValue.build();
+                    onChanged();
                 } else {
                     settingsBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -48490,16 +50417,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeSettings(context.ContextOuterClass.ConnectionSettings value) {
                 if (settingsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0) && settings_ != null && settings_ != context.ContextOuterClass.ConnectionSettings.getDefaultInstance()) {
-                        getSettingsBuilder().mergeFrom(value);
+                    if (settings_ != null) {
+                        settings_ = context.ContextOuterClass.ConnectionSettings.newBuilder(settings_).mergeFrom(value).buildPartial();
                     } else {
                         settings_ = value;
                     }
+                    onChanged();
                 } else {
                     settingsBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -48507,13 +50433,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings settings = 5;</code>
              */
             public Builder clearSettings() {
-                bitField0_ = (bitField0_ & ~0x00000010);
-                settings_ = null;
-                if (settingsBuilder_ != null) {
-                    settingsBuilder_.dispose();
+                if (settingsBuilder_ == null) {
+                    settings_ = null;
+                    onChanged();
+                } else {
+                    settings_ = null;
                     settingsBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -48521,7 +50447,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionSettings settings = 5;</code>
              */
             public context.ContextOuterClass.ConnectionSettings.Builder getSettingsBuilder() {
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return getSettingsFieldBuilder().getBuilder();
             }
@@ -48575,17 +50500,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Connection parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Connection(input, extensionRegistry);
             }
         };
 
@@ -48656,6 +50571,57 @@ public final class ContextOuterClass {
             return new ConnectionIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    connectionIds_ = new java.util.ArrayList<context.ContextOuterClass.ConnectionId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                connectionIds_.add(input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
         }
@@ -48667,7 +50633,6 @@ public final class ContextOuterClass {
 
         public static final int CONNECTION_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.ConnectionId> connectionIds_;
 
         /**
@@ -48728,7 +50693,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connectionIds_.size(); i++) {
                 output.writeMessage(1, connectionIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -48740,7 +50705,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connectionIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, connectionIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -48756,7 +50721,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ConnectionIdList other = (context.ContextOuterClass.ConnectionIdList) obj;
             if (!getConnectionIdsList().equals(other.getConnectionIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -48772,7 +50737,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTION_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -48866,23 +50831,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getConnectionIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (connectionIdsBuilder_ == null) {
                     connectionIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    connectionIds_ = null;
                     connectionIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -48908,15 +50879,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionIdList buildPartial() {
                 context.ContextOuterClass.ConnectionIdList result = new context.ContextOuterClass.ConnectionIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ConnectionIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (connectionIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
@@ -48926,10 +50889,38 @@ public final class ContextOuterClass {
                 } else {
                     result.connectionIds_ = connectionIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -48969,7 +50960,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -48981,47 +50972,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.ConnectionId m = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
-                                    if (connectionIdsBuilder_ == null) {
-                                        ensureConnectionIdsIsMutable();
-                                        connectionIds_.add(m);
-                                    } else {
-                                        connectionIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -49291,17 +51252,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionIdList(input, extensionRegistry);
             }
         };
 
@@ -49372,6 +51323,57 @@ public final class ContextOuterClass {
             return new ConnectionList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    connections_ = new java.util.ArrayList<context.ContextOuterClass.Connection>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                connections_.add(input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    connections_ = java.util.Collections.unmodifiableList(connections_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
         }
@@ -49383,7 +51385,6 @@ public final class ContextOuterClass {
 
         public static final int CONNECTIONS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.Connection> connections_;
 
         /**
@@ -49444,7 +51445,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connections_.size(); i++) {
                 output.writeMessage(1, connections_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -49456,7 +51457,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < connections_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, connections_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -49472,7 +51473,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.ConnectionList other = (context.ContextOuterClass.ConnectionList) obj;
             if (!getConnectionsList().equals(other.getConnectionsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -49488,7 +51489,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTIONS_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -49582,23 +51583,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getConnectionsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (connectionsBuilder_ == null) {
                     connections_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    connections_ = null;
                     connectionsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -49624,15 +51631,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionList buildPartial() {
                 context.ContextOuterClass.ConnectionList result = new context.ContextOuterClass.ConnectionList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.ConnectionList result) {
+                int from_bitField0_ = bitField0_;
                 if (connectionsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         connections_ = java.util.Collections.unmodifiableList(connections_);
@@ -49642,10 +51641,38 @@ public final class ContextOuterClass {
                 } else {
                     result.connections_ = connectionsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -49685,7 +51712,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -49697,47 +51724,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.Connection m = input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry);
-                                    if (connectionsBuilder_ == null) {
-                                        ensureConnectionsIsMutable();
-                                        connections_.add(m);
-                                    } else {
-                                        connectionsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -50007,17 +52004,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionList(input, extensionRegistry);
             }
         };
 
@@ -50096,6 +52083,70 @@ public final class ContextOuterClass {
             return new ConnectionEvent();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConnectionEvent(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Event.Builder subBuilder = null;
+                                if (event_ != null) {
+                                    subBuilder = event_.toBuilder();
+                                }
+                                event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(event_);
+                                    event_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
+                                if (connectionId_ != null) {
+                                    subBuilder = connectionId_.toBuilder();
+                                }
+                                connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(connectionId_);
+                                    connectionId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
         }
@@ -50132,7 +52183,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+            return getEvent();
         }
 
         public static final int CONNECTION_ID_FIELD_NUMBER = 2;
@@ -50162,7 +52213,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+            return getConnectionId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -50186,7 +52237,7 @@ public final class ContextOuterClass {
             if (connectionId_ != null) {
                 output.writeMessage(2, getConnectionId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -50201,7 +52252,7 @@ public final class ContextOuterClass {
             if (connectionId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getConnectionId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -50227,7 +52278,7 @@ public final class ContextOuterClass {
                 if (!getConnectionId().equals(other.getConnectionId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -50247,7 +52298,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getConnectionId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -50341,24 +52392,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConnectionEvent.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                connectionId_ = null;
-                if (connectionIdBuilder_ != null) {
-                    connectionIdBuilder_.dispose();
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = null;
+                } else {
+                    connectionId_ = null;
                     connectionIdBuilder_ = null;
                 }
                 return this;
@@ -50386,21 +52445,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConnectionEvent buildPartial() {
                 context.ContextOuterClass.ConnectionEvent result = new context.ContextOuterClass.ConnectionEvent(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (eventBuilder_ == null) {
+                    result.event_ = event_;
+                } else {
+                    result.event_ = eventBuilder_.build();
+                }
+                if (connectionIdBuilder_ == null) {
+                    result.connectionId_ = connectionId_;
+                } else {
+                    result.connectionId_ = connectionIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConnectionEvent result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -50422,7 +52508,7 @@ public final class ContextOuterClass {
                 if (other.hasConnectionId()) {
                     mergeConnectionId(other.getConnectionId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -50434,54 +52520,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConnectionEvent parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConnectionEvent) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Event event_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
@@ -50491,7 +52543,7 @@ public final class ContextOuterClass {
              * @return Whether the event field is set.
              */
             public boolean hasEvent() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return eventBuilder_ != null || event_ != null;
             }
 
             /**
@@ -50515,11 +52567,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     event_ = value;
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -50529,11 +52580,10 @@ public final class ContextOuterClass {
             public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                 if (eventBuilder_ == null) {
                     event_ = builderForValue.build();
+                    onChanged();
                 } else {
                     eventBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -50542,16 +52592,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEvent(context.ContextOuterClass.Event value) {
                 if (eventBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
-                        getEventBuilder().mergeFrom(value);
+                    if (event_ != null) {
+                        event_ = context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
                     } else {
                         event_ = value;
                     }
+                    onChanged();
                 } else {
                     eventBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -50559,13 +52608,13 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public Builder clearEvent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                event_ = null;
-                if (eventBuilder_ != null) {
-                    eventBuilder_.dispose();
+                if (eventBuilder_ == null) {
+                    event_ = null;
+                    onChanged();
+                } else {
+                    event_ = null;
                     eventBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -50573,7 +52622,6 @@ public final class ContextOuterClass {
              * <code>.context.Event event = 1;</code>
              */
             public context.ContextOuterClass.Event.Builder getEventBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEventFieldBuilder().getBuilder();
             }
@@ -50609,7 +52657,7 @@ public final class ContextOuterClass {
              * @return Whether the connectionId field is set.
              */
             public boolean hasConnectionId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return connectionIdBuilder_ != null || connectionId_ != null;
             }
 
             /**
@@ -50633,11 +52681,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     connectionId_ = value;
+                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -50647,11 +52694,10 @@ public final class ContextOuterClass {
             public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                 if (connectionIdBuilder_ == null) {
                     connectionId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -50660,16 +52706,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
                 if (connectionIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
-                        getConnectionIdBuilder().mergeFrom(value);
+                    if (connectionId_ != null) {
+                        connectionId_ = context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
                     } else {
                         connectionId_ = value;
                     }
+                    onChanged();
                 } else {
                     connectionIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -50677,13 +52722,13 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionId connection_id = 2;</code>
              */
             public Builder clearConnectionId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                connectionId_ = null;
-                if (connectionIdBuilder_ != null) {
-                    connectionIdBuilder_.dispose();
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = null;
+                    onChanged();
+                } else {
+                    connectionId_ = null;
                     connectionIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -50691,7 +52736,6 @@ public final class ContextOuterClass {
              * <code>.context.ConnectionId connection_id = 2;</code>
              */
             public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getConnectionIdFieldBuilder().getBuilder();
             }
@@ -50745,17 +52789,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConnectionEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConnectionEvent(input, extensionRegistry);
             }
         };
 
@@ -50855,6 +52889,83 @@ public final class ContextOuterClass {
             return new EndPointId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private EndPointId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.TopologyId.Builder subBuilder = null;
+                                if (topologyId_ != null) {
+                                    subBuilder = topologyId_.toBuilder();
+                                }
+                                topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(topologyId_);
+                                    topologyId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+                                if (deviceId_ != null) {
+                                    subBuilder = deviceId_.toBuilder();
+                                }
+                                deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceId_);
+                                    deviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 26:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (endpointUuid_ != null) {
+                                    subBuilder = endpointUuid_.toBuilder();
+                                }
+                                endpointUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointUuid_);
+                                    endpointUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
         }
@@ -50891,7 +53002,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+            return getTopologyId();
         }
 
         public static final int DEVICE_ID_FIELD_NUMBER = 2;
@@ -50921,7 +53032,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+            return getDeviceId();
         }
 
         public static final int ENDPOINT_UUID_FIELD_NUMBER = 3;
@@ -50951,7 +53062,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
-            return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
+            return getEndpointUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -50978,7 +53089,7 @@ public final class ContextOuterClass {
             if (endpointUuid_ != null) {
                 output.writeMessage(3, getEndpointUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -50996,7 +53107,7 @@ public final class ContextOuterClass {
             if (endpointUuid_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getEndpointUuid());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -51028,7 +53139,7 @@ public final class ContextOuterClass {
                 if (!getEndpointUuid().equals(other.getEndpointUuid()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -51052,7 +53163,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_UUID_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointUuid().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -51150,29 +53261,38 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                endpointUuid_ = null;
-                if (endpointUuidBuilder_ != null) {
-                    endpointUuidBuilder_.dispose();
+                if (endpointUuidBuilder_ == null) {
+                    endpointUuid_ = null;
+                } else {
+                    endpointUuid_ = null;
                     endpointUuidBuilder_ = null;
                 }
                 return this;
@@ -51200,24 +53320,53 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointId buildPartial() {
                 context.ContextOuterClass.EndPointId result = new context.ContextOuterClass.EndPointId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (topologyIdBuilder_ == null) {
+                    result.topologyId_ = topologyId_;
+                } else {
+                    result.topologyId_ = topologyIdBuilder_.build();
+                }
+                if (deviceIdBuilder_ == null) {
+                    result.deviceId_ = deviceId_;
+                } else {
+                    result.deviceId_ = deviceIdBuilder_.build();
+                }
+                if (endpointUuidBuilder_ == null) {
+                    result.endpointUuid_ = endpointUuid_;
+                } else {
+                    result.endpointUuid_ = endpointUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.EndPointId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.endpointUuid_ = endpointUuidBuilder_ == null ? endpointUuid_ : endpointUuidBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -51242,7 +53391,7 @@ public final class ContextOuterClass {
                 if (other.hasEndpointUuid()) {
                     mergeEndpointUuid(other.getEndpointUuid());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -51254,61 +53403,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.EndPointId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getEndpointUuidFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.EndPointId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.TopologyId topologyId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
@@ -51318,7 +53426,7 @@ public final class ContextOuterClass {
              * @return Whether the topologyId field is set.
              */
             public boolean hasTopologyId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return topologyIdBuilder_ != null || topologyId_ != null;
             }
 
             /**
@@ -51342,11 +53450,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     topologyId_ = value;
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -51356,11 +53463,10 @@ public final class ContextOuterClass {
             public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                 if (topologyIdBuilder_ == null) {
                     topologyId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     topologyIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -51369,16 +53475,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                 if (topologyIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
-                        getTopologyIdBuilder().mergeFrom(value);
+                    if (topologyId_ != null) {
+                        topologyId_ = context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
                     } else {
                         topologyId_ = value;
                     }
+                    onChanged();
                 } else {
                     topologyIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -51386,13 +53491,13 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 1;</code>
              */
             public Builder clearTopologyId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                topologyId_ = null;
-                if (topologyIdBuilder_ != null) {
-                    topologyIdBuilder_.dispose();
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = null;
+                    onChanged();
+                } else {
+                    topologyId_ = null;
                     topologyIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -51400,7 +53505,6 @@ public final class ContextOuterClass {
              * <code>.context.TopologyId topology_id = 1;</code>
              */
             public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTopologyIdFieldBuilder().getBuilder();
             }
@@ -51436,7 +53540,7 @@ public final class ContextOuterClass {
              * @return Whether the deviceId field is set.
              */
             public boolean hasDeviceId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return deviceIdBuilder_ != null || deviceId_ != null;
             }
 
             /**
@@ -51460,11 +53564,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     deviceId_ = value;
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -51474,11 +53577,10 @@ public final class ContextOuterClass {
             public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (deviceIdBuilder_ == null) {
                     deviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -51487,16 +53589,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                 if (deviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
-                        getDeviceIdBuilder().mergeFrom(value);
+                    if (deviceId_ != null) {
+                        deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
                     } else {
                         deviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -51504,13 +53605,13 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId device_id = 2;</code>
              */
             public Builder clearDeviceId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                    onChanged();
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -51518,7 +53619,6 @@ public final class ContextOuterClass {
              * <code>.context.DeviceId device_id = 2;</code>
              */
             public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getDeviceIdFieldBuilder().getBuilder();
             }
@@ -51554,7 +53654,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointUuid field is set.
              */
             public boolean hasEndpointUuid() {
-                return ((bitField0_ & 0x00000004) != 0);
+                return endpointUuidBuilder_ != null || endpointUuid_ != null;
             }
 
             /**
@@ -51578,11 +53678,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointUuid_ = value;
+                    onChanged();
                 } else {
                     endpointUuidBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -51592,11 +53691,10 @@ public final class ContextOuterClass {
             public Builder setEndpointUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (endpointUuidBuilder_ == null) {
                     endpointUuid_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointUuidBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -51605,16 +53703,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointUuid(context.ContextOuterClass.Uuid value) {
                 if (endpointUuidBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0) && endpointUuid_ != null && endpointUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getEndpointUuidBuilder().mergeFrom(value);
+                    if (endpointUuid_ != null) {
+                        endpointUuid_ = context.ContextOuterClass.Uuid.newBuilder(endpointUuid_).mergeFrom(value).buildPartial();
                     } else {
                         endpointUuid_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointUuidBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -51622,13 +53719,13 @@ public final class ContextOuterClass {
              * <code>.context.Uuid endpoint_uuid = 3;</code>
              */
             public Builder clearEndpointUuid() {
-                bitField0_ = (bitField0_ & ~0x00000004);
-                endpointUuid_ = null;
-                if (endpointUuidBuilder_ != null) {
-                    endpointUuidBuilder_.dispose();
+                if (endpointUuidBuilder_ == null) {
+                    endpointUuid_ = null;
+                    onChanged();
+                } else {
+                    endpointUuid_ = null;
                     endpointUuidBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -51636,7 +53733,6 @@ public final class ContextOuterClass {
              * <code>.context.Uuid endpoint_uuid = 3;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getEndpointUuidBuilder() {
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return getEndpointUuidFieldBuilder().getBuilder();
             }
@@ -51690,17 +53786,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new EndPointId(input, extensionRegistry);
             }
         };
 
@@ -51838,6 +53924,111 @@ public final class ContextOuterClass {
             return new EndPoint();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private EndPoint(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
+                                if (endpointId_ != null) {
+                                    subBuilder = endpointId_.toBuilder();
+                                }
+                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointId_);
+                                    endpointId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                endpointType_ = s;
+                                break;
+                            }
+                        case 32:
+                            {
+                                int rawValue = input.readEnum();
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                kpiSampleTypes_.add(rawValue);
+                                break;
+                            }
+                        case 34:
+                            {
+                                int length = input.readRawVarint32();
+                                int oldLimit = input.pushLimit(length);
+                                while (input.getBytesUntilLimit() > 0) {
+                                    int rawValue = input.readEnum();
+                                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                        kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>();
+                                        mutable_bitField0_ |= 0x00000001;
+                                    }
+                                    kpiSampleTypes_.add(rawValue);
+                                }
+                                input.popLimit(oldLimit);
+                                break;
+                            }
+                        case 42:
+                            {
+                                context.ContextOuterClass.Location.Builder subBuilder = null;
+                                if (endpointLocation_ != null) {
+                                    subBuilder = endpointLocation_.toBuilder();
+                                }
+                                endpointLocation_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointLocation_);
+                                    endpointLocation_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
         }
@@ -51874,13 +54065,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+            return getEndpointId();
         }
 
         public static final int NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 2;</code>
@@ -51917,8 +54107,7 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_TYPE_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object endpointType_ = "";
+        private volatile java.lang.Object endpointType_;
 
         /**
          * <code>string endpoint_type = 3;</code>
@@ -51955,13 +54144,13 @@ public final class ContextOuterClass {
 
         public static final int KPI_SAMPLE_TYPES_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<java.lang.Integer> kpiSampleTypes_;
 
         private static final com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType> kpiSampleTypes_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>() {
 
             public kpi_sample_types.KpiSampleTypes.KpiSampleType convert(java.lang.Integer from) {
-                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(from);
+                @SuppressWarnings("deprecation")
+                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(from);
                 return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
             }
         };
@@ -52042,7 +54231,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
-            return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
+            return getEndpointLocation();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -52064,10 +54253,10 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 output.writeMessage(1, getEndpointId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
+            if (!getEndpointTypeBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointType_);
             }
             if (getKpiSampleTypesList().size() > 0) {
@@ -52080,7 +54269,7 @@ public final class ContextOuterClass {
             if (endpointLocation_ != null) {
                 output.writeMessage(5, getEndpointLocation());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -52092,10 +54281,10 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
+            if (!getEndpointTypeBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointType_);
             }
             {
@@ -52113,7 +54302,7 @@ public final class ContextOuterClass {
             if (endpointLocation_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getEndpointLocation());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -52145,7 +54334,7 @@ public final class ContextOuterClass {
                 if (!getEndpointLocation().equals(other.getEndpointLocation()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -52173,7 +54362,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointLocation().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -52267,28 +54456,36 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPoint.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
                 name_ = "";
                 endpointType_ = "";
                 kpiSampleTypes_ = java.util.Collections.emptyList();
-                bitField0_ = (bitField0_ & ~0x00000008);
-                endpointLocation_ = null;
-                if (endpointLocationBuilder_ != null) {
-                    endpointLocationBuilder_.dispose();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                if (endpointLocationBuilder_ == null) {
+                    endpointLocation_ = null;
+                } else {
+                    endpointLocation_ = null;
                     endpointLocationBuilder_ = null;
                 }
                 return this;
@@ -52316,36 +54513,56 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPoint buildPartial() {
                 context.ContextOuterClass.EndPoint result = new context.ContextOuterClass.EndPoint(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (endpointIdBuilder_ == null) {
+                    result.endpointId_ = endpointId_;
+                } else {
+                    result.endpointId_ = endpointIdBuilder_.build();
+                }
+                result.name_ = name_;
+                result.endpointType_ = endpointType_;
+                if (((bitField0_ & 0x00000001) != 0)) {
+                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                }
+                result.kpiSampleTypes_ = kpiSampleTypes_;
+                if (endpointLocationBuilder_ == null) {
+                    result.endpointLocation_ = endpointLocation_;
+                } else {
+                    result.endpointLocation_ = endpointLocationBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPoint result) {
-                if (((bitField0_ & 0x00000008) != 0)) {
-                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
-                    bitField0_ = (bitField0_ & ~0x00000008);
-                }
-                result.kpiSampleTypes_ = kpiSampleTypes_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
             }
 
-            private void buildPartial0(context.ContextOuterClass.EndPoint result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.endpointType_ = endpointType_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.endpointLocation_ = endpointLocationBuilder_ == null ? endpointLocation_ : endpointLocationBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -52366,18 +54583,16 @@ public final class ContextOuterClass {
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getEndpointType().isEmpty()) {
                     endpointType_ = other.endpointType_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (!other.kpiSampleTypes_.isEmpty()) {
                     if (kpiSampleTypes_.isEmpty()) {
                         kpiSampleTypes_ = other.kpiSampleTypes_;
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     } else {
                         ensureKpiSampleTypesIsMutable();
                         kpiSampleTypes_.addAll(other.kpiSampleTypes_);
@@ -52387,7 +54602,7 @@ public final class ContextOuterClass {
                 if (other.hasEndpointLocation()) {
                     mergeEndpointLocation(other.getEndpointLocation());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -52399,84 +54614,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.EndPoint parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    endpointType_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 32:
-                                {
-                                    int tmpRaw = input.readEnum();
-                                    ensureKpiSampleTypesIsMutable();
-                                    kpiSampleTypes_.add(tmpRaw);
-                                    break;
-                                }
-                            // case 32
-                            case 34:
-                                {
-                                    int length = input.readRawVarint32();
-                                    int oldLimit = input.pushLimit(length);
-                                    while (input.getBytesUntilLimit() > 0) {
-                                        int tmpRaw = input.readEnum();
-                                        ensureKpiSampleTypesIsMutable();
-                                        kpiSampleTypes_.add(tmpRaw);
-                                    }
-                                    input.popLimit(oldLimit);
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    input.readMessage(getEndpointLocationFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.EndPoint) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -52491,7 +54639,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return endpointIdBuilder_ != null || endpointId_ != null;
             }
 
             /**
@@ -52515,11 +54663,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -52529,11 +54676,10 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -52542,16 +54688,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
-                        getEndpointIdBuilder().mergeFrom(value);
+                    if (endpointId_ != null) {
+                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
                     } else {
                         endpointId_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -52559,13 +54704,13 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public Builder clearEndpointId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                    onChanged();
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -52573,7 +54718,6 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -52643,7 +54787,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -52654,7 +54797,6 @@ public final class ContextOuterClass {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -52670,7 +54812,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -52718,7 +54859,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 endpointType_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -52729,7 +54869,6 @@ public final class ContextOuterClass {
              */
             public Builder clearEndpointType() {
                 endpointType_ = getDefaultInstance().getEndpointType();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -52745,7 +54884,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 endpointType_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -52753,9 +54891,9 @@ public final class ContextOuterClass {
             private java.util.List<java.lang.Integer> kpiSampleTypes_ = java.util.Collections.emptyList();
 
             private void ensureKpiSampleTypesIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>(kpiSampleTypes_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -52835,7 +54973,7 @@ public final class ContextOuterClass {
              */
             public Builder clearKpiSampleTypes() {
                 kpiSampleTypes_ = java.util.Collections.emptyList();
-                bitField0_ = (bitField0_ & ~0x00000008);
+                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -52859,8 +54997,8 @@ public final class ContextOuterClass {
 
             /**
              * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-             * @param index The index to set the value at.
-             * @param value The enum numeric value on the wire for kpiSampleTypes to set.
+             * @param index The index of the value to return.
+             * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
              * @return This builder for chaining.
              */
             public Builder setKpiSampleTypesValue(int index, int value) {
@@ -52905,7 +55043,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointLocation field is set.
              */
             public boolean hasEndpointLocation() {
-                return ((bitField0_ & 0x00000010) != 0);
+                return endpointLocationBuilder_ != null || endpointLocation_ != null;
             }
 
             /**
@@ -52929,11 +55067,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointLocation_ = value;
+                    onChanged();
                 } else {
                     endpointLocationBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -52943,11 +55080,10 @@ public final class ContextOuterClass {
             public Builder setEndpointLocation(context.ContextOuterClass.Location.Builder builderForValue) {
                 if (endpointLocationBuilder_ == null) {
                     endpointLocation_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointLocationBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -52956,16 +55092,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointLocation(context.ContextOuterClass.Location value) {
                 if (endpointLocationBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0) && endpointLocation_ != null && endpointLocation_ != context.ContextOuterClass.Location.getDefaultInstance()) {
-                        getEndpointLocationBuilder().mergeFrom(value);
+                    if (endpointLocation_ != null) {
+                        endpointLocation_ = context.ContextOuterClass.Location.newBuilder(endpointLocation_).mergeFrom(value).buildPartial();
                     } else {
                         endpointLocation_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointLocationBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -52973,13 +55108,13 @@ public final class ContextOuterClass {
              * <code>.context.Location endpoint_location = 5;</code>
              */
             public Builder clearEndpointLocation() {
-                bitField0_ = (bitField0_ & ~0x00000010);
-                endpointLocation_ = null;
-                if (endpointLocationBuilder_ != null) {
-                    endpointLocationBuilder_.dispose();
+                if (endpointLocationBuilder_ == null) {
+                    endpointLocation_ = null;
+                    onChanged();
+                } else {
+                    endpointLocation_ = null;
                     endpointLocationBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -52987,7 +55122,6 @@ public final class ContextOuterClass {
              * <code>.context.Location endpoint_location = 5;</code>
              */
             public context.ContextOuterClass.Location.Builder getEndpointLocationBuilder() {
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return getEndpointLocationFieldBuilder().getBuilder();
             }
@@ -53041,17 +55175,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPoint parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new EndPoint(input, extensionRegistry);
             }
         };
 
@@ -53152,6 +55276,75 @@ public final class ContextOuterClass {
             return new EndPointName();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private EndPointName(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
+                                if (endpointId_ != null) {
+                                    subBuilder = endpointId_.toBuilder();
+                                }
+                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointId_);
+                                    endpointId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                deviceName_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                endpointName_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                endpointType_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
         }
@@ -53188,13 +55381,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+            return getEndpointId();
         }
 
         public static final int DEVICE_NAME_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object deviceName_ = "";
+        private volatile java.lang.Object deviceName_;
 
         /**
          * <code>string device_name = 2;</code>
@@ -53231,8 +55423,7 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_NAME_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object endpointName_ = "";
+        private volatile java.lang.Object endpointName_;
 
         /**
          * <code>string endpoint_name = 3;</code>
@@ -53269,8 +55460,7 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_TYPE_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object endpointType_ = "";
+        private volatile java.lang.Object endpointType_;
 
         /**
          * <code>string endpoint_type = 4;</code>
@@ -53323,16 +55513,16 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 output.writeMessage(1, getEndpointId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceName_)) {
+            if (!getDeviceNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, deviceName_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointName_)) {
+            if (!getEndpointNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointName_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
+            if (!getEndpointTypeBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 4, endpointType_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -53344,16 +55534,16 @@ public final class ContextOuterClass {
             if (endpointId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceName_)) {
+            if (!getDeviceNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, deviceName_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointName_)) {
+            if (!getEndpointNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointName_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
+            if (!getEndpointTypeBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, endpointType_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -53379,7 +55569,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getEndpointType().equals(other.getEndpointType()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -53401,7 +55591,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getEndpointName().hashCode();
             hash = (37 * hash) + ENDPOINT_TYPE_FIELD_NUMBER;
             hash = (53 * hash) + getEndpointType().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -53495,19 +55685,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointName.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
                 deviceName_ = "";
@@ -53538,27 +55735,46 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointName buildPartial() {
                 context.ContextOuterClass.EndPointName result = new context.ContextOuterClass.EndPointName(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (endpointIdBuilder_ == null) {
+                    result.endpointId_ = endpointId_;
+                } else {
+                    result.endpointId_ = endpointIdBuilder_.build();
                 }
+                result.deviceName_ = deviceName_;
+                result.endpointName_ = endpointName_;
+                result.endpointType_ = endpointType_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.EndPointName result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.deviceName_ = deviceName_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.endpointName_ = endpointName_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.endpointType_ = endpointType_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -53579,20 +55795,17 @@ public final class ContextOuterClass {
                 }
                 if (!other.getDeviceName().isEmpty()) {
                     deviceName_ = other.deviceName_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getEndpointName().isEmpty()) {
                     endpointName_ = other.endpointName_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (!other.getEndpointType().isEmpty()) {
                     endpointType_ = other.endpointType_;
-                    bitField0_ |= 0x00000008;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -53604,68 +55817,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.EndPointName parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    deviceName_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    endpointName_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    endpointType_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.EndPointName) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
@@ -53675,7 +55840,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return endpointIdBuilder_ != null || endpointId_ != null;
             }
 
             /**
@@ -53699,11 +55864,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -53713,11 +55877,10 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -53726,16 +55889,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
-                        getEndpointIdBuilder().mergeFrom(value);
+                    if (endpointId_ != null) {
+                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
                     } else {
                         endpointId_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -53743,13 +55905,13 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public Builder clearEndpointId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                    onChanged();
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -53757,7 +55919,6 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -53827,7 +55988,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 deviceName_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -53838,7 +55998,6 @@ public final class ContextOuterClass {
              */
             public Builder clearDeviceName() {
                 deviceName_ = getDefaultInstance().getDeviceName();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -53854,7 +56013,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 deviceName_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -53902,7 +56060,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 endpointName_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -53913,7 +56070,6 @@ public final class ContextOuterClass {
              */
             public Builder clearEndpointName() {
                 endpointName_ = getDefaultInstance().getEndpointName();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -53929,7 +56085,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 endpointName_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -53977,7 +56132,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 endpointType_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -53988,7 +56142,6 @@ public final class ContextOuterClass {
              */
             public Builder clearEndpointType() {
                 endpointType_ = getDefaultInstance().getEndpointType();
-                bitField0_ = (bitField0_ & ~0x00000008);
                 onChanged();
                 return this;
             }
@@ -54004,7 +56157,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 endpointType_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -54036,17 +56188,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointName parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new EndPointName(input, extensionRegistry);
             }
         };
 
@@ -54117,6 +56259,57 @@ public final class ContextOuterClass {
             return new EndPointIdList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private EndPointIdList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                endpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
         }
@@ -54128,7 +56321,6 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_;
 
         /**
@@ -54189,7 +56381,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointIds_.size(); i++) {
                 output.writeMessage(1, endpointIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -54201,7 +56393,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, endpointIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -54217,7 +56409,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.EndPointIdList other = (context.ContextOuterClass.EndPointIdList) obj;
             if (!getEndpointIdsList().equals(other.getEndpointIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -54233,7 +56425,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -54327,23 +56519,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointIdList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getEndpointIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (endpointIdsBuilder_ == null) {
                     endpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    endpointIds_ = null;
                     endpointIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -54369,15 +56567,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointIdList buildPartial() {
                 context.ContextOuterClass.EndPointIdList result = new context.ContextOuterClass.EndPointIdList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPointIdList result) {
+                int from_bitField0_ = bitField0_;
                 if (endpointIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
@@ -54387,10 +56577,38 @@ public final class ContextOuterClass {
                 } else {
                     result.endpointIds_ = endpointIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.EndPointIdList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -54430,7 +56648,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -54442,47 +56660,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.EndPointIdList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                    if (endpointIdsBuilder_ == null) {
-                                        ensureEndpointIdsIsMutable();
-                                        endpointIds_.add(m);
-                                    } else {
-                                        endpointIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.EndPointIdList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -54752,17 +56940,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new EndPointIdList(input, extensionRegistry);
             }
         };
 
@@ -54833,6 +57011,57 @@ public final class ContextOuterClass {
             return new EndPointNameList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private EndPointNameList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    endpointNames_ = new java.util.ArrayList<context.ContextOuterClass.EndPointName>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                endpointNames_.add(input.readMessage(context.ContextOuterClass.EndPointName.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
         }
@@ -54844,7 +57073,6 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_NAMES_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointName> endpointNames_;
 
         /**
@@ -54905,7 +57133,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointNames_.size(); i++) {
                 output.writeMessage(1, endpointNames_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -54917,7 +57145,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < endpointNames_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, endpointNames_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -54933,7 +57161,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.EndPointNameList other = (context.ContextOuterClass.EndPointNameList) obj;
             if (!getEndpointNamesList().equals(other.getEndpointNamesList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -54949,7 +57177,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ENDPOINT_NAMES_FIELD_NUMBER;
                 hash = (53 * hash) + getEndpointNamesList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -55043,23 +57271,29 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.EndPointNameList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getEndpointNamesFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (endpointNamesBuilder_ == null) {
                     endpointNames_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    endpointNames_ = null;
                     endpointNamesBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -55085,15 +57319,7 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.EndPointNameList buildPartial() {
                 context.ContextOuterClass.EndPointNameList result = new context.ContextOuterClass.EndPointNameList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPointNameList result) {
+                int from_bitField0_ = bitField0_;
                 if (endpointNamesBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
@@ -55103,10 +57329,38 @@ public final class ContextOuterClass {
                 } else {
                     result.endpointNames_ = endpointNamesBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.EndPointNameList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -55146,7 +57400,7 @@ public final class ContextOuterClass {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -55158,47 +57412,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.EndPointNameList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    context.ContextOuterClass.EndPointName m = input.readMessage(context.ContextOuterClass.EndPointName.parser(), extensionRegistry);
-                                    if (endpointNamesBuilder_ == null) {
-                                        ensureEndpointNamesIsMutable();
-                                        endpointNames_.add(m);
-                                    } else {
-                                        endpointNamesBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.EndPointNameList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -55468,17 +57692,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public EndPointNameList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new EndPointNameList(input, extensionRegistry);
             }
         };
 
@@ -55549,6 +57763,56 @@ public final class ContextOuterClass {
             return new ConfigRule_Custom();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConfigRule_Custom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                resourceKey_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                resourceValue_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
         }
@@ -55560,8 +57824,7 @@ public final class ContextOuterClass {
 
         public static final int RESOURCE_KEY_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object resourceKey_ = "";
+        private volatile java.lang.Object resourceKey_;
 
         /**
          * <code>string resource_key = 1;</code>
@@ -55598,8 +57861,7 @@ public final class ContextOuterClass {
 
         public static final int RESOURCE_VALUE_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object resourceValue_ = "";
+        private volatile java.lang.Object resourceValue_;
 
         /**
          * <code>string resource_value = 2;</code>
@@ -55649,13 +57911,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceKey_)) {
+            if (!getResourceKeyBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, resourceKey_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceValue_)) {
+            if (!getResourceValueBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, resourceValue_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -55664,13 +57926,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceKey_)) {
+            if (!getResourceKeyBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, resourceKey_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceValue_)) {
+            if (!getResourceValueBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, resourceValue_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -55688,7 +57950,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getResourceValue().equals(other.getResourceValue()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -55704,7 +57966,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getResourceKey().hashCode();
             hash = (37 * hash) + RESOURCE_VALUE_FIELD_NUMBER;
             hash = (53 * hash) + getResourceValue().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -55798,16 +58060,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConfigRule_Custom.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 resourceKey_ = "";
                 resourceValue_ = "";
                 return this;
@@ -55835,21 +58103,40 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConfigRule_Custom buildPartial() {
                 context.ContextOuterClass.ConfigRule_Custom result = new context.ContextOuterClass.ConfigRule_Custom(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.resourceKey_ = resourceKey_;
+                result.resourceValue_ = resourceValue_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConfigRule_Custom result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.resourceKey_ = resourceKey_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.resourceValue_ = resourceValue_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -55867,15 +58154,13 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getResourceKey().isEmpty()) {
                     resourceKey_ = other.resourceKey_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getResourceValue().isEmpty()) {
                     resourceValue_ = other.resourceValue_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -55887,54 +58172,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConfigRule_Custom parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    resourceKey_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    resourceValue_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConfigRule_Custom) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private java.lang.Object resourceKey_ = "";
 
             /**
@@ -55978,7 +58229,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 resourceKey_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -55989,7 +58239,6 @@ public final class ContextOuterClass {
              */
             public Builder clearResourceKey() {
                 resourceKey_ = getDefaultInstance().getResourceKey();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -56005,7 +58254,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 resourceKey_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -56053,7 +58301,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 resourceValue_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -56064,7 +58311,6 @@ public final class ContextOuterClass {
              */
             public Builder clearResourceValue() {
                 resourceValue_ = getDefaultInstance().getResourceValue();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -56080,7 +58326,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 resourceValue_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -56112,17 +58357,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConfigRule_Custom parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConfigRule_Custom(input, extensionRegistry);
             }
         };
 
@@ -56201,6 +58436,70 @@ public final class ContextOuterClass {
             return new ConfigRule_ACL();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConfigRule_ACL(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
+                                if (endpointId_ != null) {
+                                    subBuilder = endpointId_.toBuilder();
+                                }
+                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointId_);
+                                    endpointId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                acl.Acl.AclRuleSet.Builder subBuilder = null;
+                                if (ruleSet_ != null) {
+                                    subBuilder = ruleSet_.toBuilder();
+                                }
+                                ruleSet_ = input.readMessage(acl.Acl.AclRuleSet.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(ruleSet_);
+                                    ruleSet_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
         }
@@ -56237,7 +58536,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+            return getEndpointId();
         }
 
         public static final int RULE_SET_FIELD_NUMBER = 2;
@@ -56267,7 +58566,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder() {
-            return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
+            return getRuleSet();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -56291,7 +58590,7 @@ public final class ContextOuterClass {
             if (ruleSet_ != null) {
                 output.writeMessage(2, getRuleSet());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -56306,7 +58605,7 @@ public final class ContextOuterClass {
             if (ruleSet_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getRuleSet());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -56332,7 +58631,7 @@ public final class ContextOuterClass {
                 if (!getRuleSet().equals(other.getRuleSet()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -56352,7 +58651,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + RULE_SET_FIELD_NUMBER;
                 hash = (53 * hash) + getRuleSet().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -56446,24 +58745,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConfigRule_ACL.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                ruleSet_ = null;
-                if (ruleSetBuilder_ != null) {
-                    ruleSetBuilder_.dispose();
+                if (ruleSetBuilder_ == null) {
+                    ruleSet_ = null;
+                } else {
+                    ruleSet_ = null;
                     ruleSetBuilder_ = null;
                 }
                 return this;
@@ -56491,21 +58798,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConfigRule_ACL buildPartial() {
                 context.ContextOuterClass.ConfigRule_ACL result = new context.ContextOuterClass.ConfigRule_ACL(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (endpointIdBuilder_ == null) {
+                    result.endpointId_ = endpointId_;
+                } else {
+                    result.endpointId_ = endpointIdBuilder_.build();
+                }
+                if (ruleSetBuilder_ == null) {
+                    result.ruleSet_ = ruleSet_;
+                } else {
+                    result.ruleSet_ = ruleSetBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConfigRule_ACL result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.ruleSet_ = ruleSetBuilder_ == null ? ruleSet_ : ruleSetBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -56527,7 +58861,7 @@ public final class ContextOuterClass {
                 if (other.hasRuleSet()) {
                     mergeRuleSet(other.getRuleSet());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -56539,54 +58873,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConfigRule_ACL parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getRuleSetFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConfigRule_ACL) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
@@ -56596,7 +58896,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return endpointIdBuilder_ != null || endpointId_ != null;
             }
 
             /**
@@ -56620,11 +58920,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -56634,11 +58933,10 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -56647,16 +58945,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
-                        getEndpointIdBuilder().mergeFrom(value);
+                    if (endpointId_ != null) {
+                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
                     } else {
                         endpointId_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -56664,13 +58961,13 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public Builder clearEndpointId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                    onChanged();
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -56678,7 +58975,6 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -56714,7 +59010,7 @@ public final class ContextOuterClass {
              * @return Whether the ruleSet field is set.
              */
             public boolean hasRuleSet() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return ruleSetBuilder_ != null || ruleSet_ != null;
             }
 
             /**
@@ -56738,11 +59034,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     ruleSet_ = value;
+                    onChanged();
                 } else {
                     ruleSetBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -56752,11 +59047,10 @@ public final class ContextOuterClass {
             public Builder setRuleSet(acl.Acl.AclRuleSet.Builder builderForValue) {
                 if (ruleSetBuilder_ == null) {
                     ruleSet_ = builderForValue.build();
+                    onChanged();
                 } else {
                     ruleSetBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -56765,16 +59059,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeRuleSet(acl.Acl.AclRuleSet value) {
                 if (ruleSetBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && ruleSet_ != null && ruleSet_ != acl.Acl.AclRuleSet.getDefaultInstance()) {
-                        getRuleSetBuilder().mergeFrom(value);
+                    if (ruleSet_ != null) {
+                        ruleSet_ = acl.Acl.AclRuleSet.newBuilder(ruleSet_).mergeFrom(value).buildPartial();
                     } else {
                         ruleSet_ = value;
                     }
+                    onChanged();
                 } else {
                     ruleSetBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -56782,13 +59075,13 @@ public final class ContextOuterClass {
              * <code>.acl.AclRuleSet rule_set = 2;</code>
              */
             public Builder clearRuleSet() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                ruleSet_ = null;
-                if (ruleSetBuilder_ != null) {
-                    ruleSetBuilder_.dispose();
+                if (ruleSetBuilder_ == null) {
+                    ruleSet_ = null;
+                    onChanged();
+                } else {
+                    ruleSet_ = null;
                     ruleSetBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -56796,7 +59089,6 @@ public final class ContextOuterClass {
              * <code>.acl.AclRuleSet rule_set = 2;</code>
              */
             public acl.Acl.AclRuleSet.Builder getRuleSetBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getRuleSetFieldBuilder().getBuilder();
             }
@@ -56850,17 +59142,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConfigRule_ACL parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConfigRule_ACL(input, extensionRegistry);
             }
         };
 
@@ -56928,7 +59210,7 @@ public final class ContextOuterClass {
          */
         context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder();
 
-        context.ContextOuterClass.ConfigRule.ConfigRuleCase getConfigRuleCase();
+        public context.ContextOuterClass.ConfigRule.ConfigRuleCase getConfigRuleCase();
     }
 
     /**
@@ -56954,6 +59236,78 @@ public final class ContextOuterClass {
             return new ConfigRule();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private ConfigRule(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                action_ = rawValue;
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.ConfigRule_Custom.Builder subBuilder = null;
+                                if (configRuleCase_ == 2) {
+                                    subBuilder = ((context.ContextOuterClass.ConfigRule_Custom) configRule_).toBuilder();
+                                }
+                                configRule_ = input.readMessage(context.ContextOuterClass.ConfigRule_Custom.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.ConfigRule_Custom) configRule_);
+                                    configRule_ = subBuilder.buildPartial();
+                                }
+                                configRuleCase_ = 2;
+                                break;
+                            }
+                        case 26:
+                            {
+                                context.ContextOuterClass.ConfigRule_ACL.Builder subBuilder = null;
+                                if (configRuleCase_ == 3) {
+                                    subBuilder = ((context.ContextOuterClass.ConfigRule_ACL) configRule_).toBuilder();
+                                }
+                                configRule_ = input.readMessage(context.ContextOuterClass.ConfigRule_ACL.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.ConfigRule_ACL) configRule_);
+                                    configRule_ = subBuilder.buildPartial();
+                                }
+                                configRuleCase_ = 3;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
         }
@@ -56965,7 +59319,6 @@ public final class ContextOuterClass {
 
         private int configRuleCase_ = 0;
 
-        @SuppressWarnings("serial")
         private java.lang.Object configRule_;
 
         public enum ConfigRuleCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -57012,7 +59365,7 @@ public final class ContextOuterClass {
 
         public static final int ACTION_FIELD_NUMBER = 1;
 
-        private int action_ = 0;
+        private int action_;
 
         /**
          * <code>.context.ConfigActionEnum action = 1;</code>
@@ -57029,7 +59382,8 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConfigActionEnum getAction() {
-            context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.forNumber(action_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.valueOf(action_);
             return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
         }
 
@@ -57125,7 +59479,7 @@ public final class ContextOuterClass {
             if (configRuleCase_ == 3) {
                 output.writeMessage(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -57143,7 +59497,7 @@ public final class ContextOuterClass {
             if (configRuleCase_ == 3) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -57173,7 +59527,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -57199,7 +59553,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -57293,23 +59647,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.ConfigRule.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 action_ = 0;
-                if (customBuilder_ != null) {
-                    customBuilder_.clear();
-                }
-                if (aclBuilder_ != null) {
-                    aclBuilder_.clear();
-                }
                 configRuleCase_ = 0;
                 configRule_ = null;
                 return this;
@@ -57337,30 +59691,54 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.ConfigRule buildPartial() {
                 context.ContextOuterClass.ConfigRule result = new context.ContextOuterClass.ConfigRule(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                result.action_ = action_;
+                if (configRuleCase_ == 2) {
+                    if (customBuilder_ == null) {
+                        result.configRule_ = configRule_;
+                    } else {
+                        result.configRule_ = customBuilder_.build();
+                    }
                 }
-                buildPartialOneofs(result);
+                if (configRuleCase_ == 3) {
+                    if (aclBuilder_ == null) {
+                        result.configRule_ = configRule_;
+                    } else {
+                        result.configRule_ = aclBuilder_.build();
+                    }
+                }
+                result.configRuleCase_ = configRuleCase_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.ConfigRule result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.action_ = action_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
             }
 
-            private void buildPartialOneofs(context.ContextOuterClass.ConfigRule result) {
-                result.configRuleCase_ = configRuleCase_;
-                result.configRule_ = this.configRule_;
-                if (configRuleCase_ == 2 && customBuilder_ != null) {
-                    result.configRule_ = customBuilder_.build();
-                }
-                if (configRuleCase_ == 3 && aclBuilder_ != null) {
-                    result.configRule_ = aclBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -57395,7 +59773,7 @@ public final class ContextOuterClass {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -57407,56 +59785,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.ConfigRule parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    action_ = input.readEnum();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 18:
-                                {
-                                    input.readMessage(getCustomFieldBuilder().getBuilder(), extensionRegistry);
-                                    configRuleCase_ = 2;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getAclFieldBuilder().getBuilder(), extensionRegistry);
-                                    configRuleCase_ = 3;
-                                    break;
-                                }
-                            // case 26
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.ConfigRule) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -57475,8 +59814,6 @@ public final class ContextOuterClass {
                 return this;
             }
 
-            private int bitField0_;
-
             private int action_ = 0;
 
             /**
@@ -57495,7 +59832,6 @@ public final class ContextOuterClass {
              */
             public Builder setActionValue(int value) {
                 action_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -57506,7 +59842,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ConfigActionEnum getAction() {
-                context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.forNumber(action_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.valueOf(action_);
                 return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
             }
 
@@ -57519,7 +59856,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000001;
                 action_ = value.getNumber();
                 onChanged();
                 return this;
@@ -57530,7 +59866,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAction() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 action_ = 0;
                 onChanged();
                 return this;
@@ -57611,9 +59946,8 @@ public final class ContextOuterClass {
                 } else {
                     if (configRuleCase_ == 2) {
                         customBuilder_.mergeFrom(value);
-                    } else {
-                        customBuilder_.setMessage(value);
                     }
+                    customBuilder_.setMessage(value);
                 }
                 configRuleCase_ = 2;
                 return this;
@@ -57674,6 +60008,7 @@ public final class ContextOuterClass {
                 }
                 configRuleCase_ = 2;
                 onChanged();
+                ;
                 return customBuilder_;
             }
 
@@ -57752,9 +60087,8 @@ public final class ContextOuterClass {
                 } else {
                     if (configRuleCase_ == 3) {
                         aclBuilder_.mergeFrom(value);
-                    } else {
-                        aclBuilder_.setMessage(value);
                     }
+                    aclBuilder_.setMessage(value);
                 }
                 configRuleCase_ = 3;
                 return this;
@@ -57815,6 +60149,7 @@ public final class ContextOuterClass {
                 }
                 configRuleCase_ = 3;
                 onChanged();
+                ;
                 return aclBuilder_;
             }
 
@@ -57845,17 +60180,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public ConfigRule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new ConfigRule(input, extensionRegistry);
             }
         };
 
@@ -57926,6 +60251,56 @@ public final class ContextOuterClass {
             return new Constraint_Custom();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_Custom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                constraintType_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                constraintValue_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
         }
@@ -57937,8 +60312,7 @@ public final class ContextOuterClass {
 
         public static final int CONSTRAINT_TYPE_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object constraintType_ = "";
+        private volatile java.lang.Object constraintType_;
 
         /**
          * <code>string constraint_type = 1;</code>
@@ -57975,8 +60349,7 @@ public final class ContextOuterClass {
 
         public static final int CONSTRAINT_VALUE_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object constraintValue_ = "";
+        private volatile java.lang.Object constraintValue_;
 
         /**
          * <code>string constraint_value = 2;</code>
@@ -58026,13 +60399,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintType_)) {
+            if (!getConstraintTypeBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, constraintType_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintValue_)) {
+            if (!getConstraintValueBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, constraintValue_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -58041,13 +60414,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintType_)) {
+            if (!getConstraintTypeBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, constraintType_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintValue_)) {
+            if (!getConstraintValueBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, constraintValue_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -58065,7 +60438,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getConstraintValue().equals(other.getConstraintValue()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -58081,7 +60454,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getConstraintType().hashCode();
             hash = (37 * hash) + CONSTRAINT_VALUE_FIELD_NUMBER;
             hash = (53 * hash) + getConstraintValue().hashCode();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -58175,16 +60548,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_Custom.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 constraintType_ = "";
                 constraintValue_ = "";
                 return this;
@@ -58212,21 +60591,40 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_Custom buildPartial() {
                 context.ContextOuterClass.Constraint_Custom result = new context.ContextOuterClass.Constraint_Custom(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.constraintType_ = constraintType_;
+                result.constraintValue_ = constraintValue_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_Custom result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.constraintType_ = constraintType_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.constraintValue_ = constraintValue_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -58244,15 +60642,13 @@ public final class ContextOuterClass {
                     return this;
                 if (!other.getConstraintType().isEmpty()) {
                     constraintType_ = other.constraintType_;
-                    bitField0_ |= 0x00000001;
                     onChanged();
                 }
                 if (!other.getConstraintValue().isEmpty()) {
                     constraintValue_ = other.constraintValue_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -58264,54 +60660,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_Custom parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    constraintType_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    constraintValue_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_Custom) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private java.lang.Object constraintType_ = "";
 
             /**
@@ -58355,7 +60717,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 constraintType_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -58366,7 +60727,6 @@ public final class ContextOuterClass {
              */
             public Builder clearConstraintType() {
                 constraintType_ = getDefaultInstance().getConstraintType();
-                bitField0_ = (bitField0_ & ~0x00000001);
                 onChanged();
                 return this;
             }
@@ -58382,7 +60742,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 constraintType_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -58430,7 +60789,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 constraintValue_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -58441,7 +60799,6 @@ public final class ContextOuterClass {
              */
             public Builder clearConstraintValue() {
                 constraintValue_ = getDefaultInstance().getConstraintValue();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -58457,7 +60814,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 constraintValue_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -58489,17 +60845,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_Custom parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_Custom(input, extensionRegistry);
             }
         };
 
@@ -58556,6 +60902,54 @@ public final class ContextOuterClass {
             return new Constraint_Schedule();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_Schedule(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 13:
+                            {
+                                startTimestamp_ = input.readFloat();
+                                break;
+                            }
+                        case 21:
+                            {
+                                durationDays_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
         }
@@ -58567,7 +60961,7 @@ public final class ContextOuterClass {
 
         public static final int START_TIMESTAMP_FIELD_NUMBER = 1;
 
-        private float startTimestamp_ = 0F;
+        private float startTimestamp_;
 
         /**
          * <code>float start_timestamp = 1;</code>
@@ -58580,7 +60974,7 @@ public final class ContextOuterClass {
 
         public static final int DURATION_DAYS_FIELD_NUMBER = 2;
 
-        private float durationDays_ = 0F;
+        private float durationDays_;
 
         /**
          * <code>float duration_days = 2;</code>
@@ -58606,13 +61000,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (java.lang.Float.floatToRawIntBits(startTimestamp_) != 0) {
+            if (startTimestamp_ != 0F) {
                 output.writeFloat(1, startTimestamp_);
             }
-            if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) {
+            if (durationDays_ != 0F) {
                 output.writeFloat(2, durationDays_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -58621,13 +61015,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (java.lang.Float.floatToRawIntBits(startTimestamp_) != 0) {
+            if (startTimestamp_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, startTimestamp_);
             }
-            if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) {
+            if (durationDays_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, durationDays_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -58645,7 +61039,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getDurationDays()) != java.lang.Float.floatToIntBits(other.getDurationDays()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -58661,7 +61055,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getStartTimestamp());
             hash = (37 * hash) + DURATION_DAYS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getDurationDays());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -58755,16 +61149,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_Schedule.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 startTimestamp_ = 0F;
                 durationDays_ = 0F;
                 return this;
@@ -58792,21 +61192,40 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_Schedule buildPartial() {
                 context.ContextOuterClass.Constraint_Schedule result = new context.ContextOuterClass.Constraint_Schedule(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.startTimestamp_ = startTimestamp_;
+                result.durationDays_ = durationDays_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_Schedule result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.startTimestamp_ = startTimestamp_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.durationDays_ = durationDays_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -58828,7 +61247,7 @@ public final class ContextOuterClass {
                 if (other.getDurationDays() != 0F) {
                     setDurationDays(other.getDurationDays());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -58840,54 +61259,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_Schedule parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 13:
-                                {
-                                    startTimestamp_ = input.readFloat();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 13
-                            case 21:
-                                {
-                                    durationDays_ = input.readFloat();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 21
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_Schedule) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private float startTimestamp_;
 
             /**
@@ -58906,7 +61291,6 @@ public final class ContextOuterClass {
              */
             public Builder setStartTimestamp(float value) {
                 startTimestamp_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -58916,7 +61300,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearStartTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 startTimestamp_ = 0F;
                 onChanged();
                 return this;
@@ -58940,7 +61323,6 @@ public final class ContextOuterClass {
              */
             public Builder setDurationDays(float value) {
                 durationDays_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -58950,7 +61332,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearDurationDays() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 durationDays_ = 0F;
                 onChanged();
                 return this;
@@ -58983,17 +61364,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_Schedule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_Schedule(input, extensionRegistry);
             }
         };
 
@@ -59050,6 +61421,54 @@ public final class ContextOuterClass {
             return new GPS_Position();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private GPS_Position(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 13:
+                            {
+                                latitude_ = input.readFloat();
+                                break;
+                            }
+                        case 21:
+                            {
+                                longitude_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
         }
@@ -59061,7 +61480,7 @@ public final class ContextOuterClass {
 
         public static final int LATITUDE_FIELD_NUMBER = 1;
 
-        private float latitude_ = 0F;
+        private float latitude_;
 
         /**
          * <code>float latitude = 1;</code>
@@ -59074,7 +61493,7 @@ public final class ContextOuterClass {
 
         public static final int LONGITUDE_FIELD_NUMBER = 2;
 
-        private float longitude_ = 0F;
+        private float longitude_;
 
         /**
          * <code>float longitude = 2;</code>
@@ -59100,13 +61519,13 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (java.lang.Float.floatToRawIntBits(latitude_) != 0) {
+            if (latitude_ != 0F) {
                 output.writeFloat(1, latitude_);
             }
-            if (java.lang.Float.floatToRawIntBits(longitude_) != 0) {
+            if (longitude_ != 0F) {
                 output.writeFloat(2, longitude_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -59115,13 +61534,13 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (java.lang.Float.floatToRawIntBits(latitude_) != 0) {
+            if (latitude_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, latitude_);
             }
-            if (java.lang.Float.floatToRawIntBits(longitude_) != 0) {
+            if (longitude_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, longitude_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -59139,7 +61558,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getLongitude()) != java.lang.Float.floatToIntBits(other.getLongitude()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -59155,7 +61574,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getLatitude());
             hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getLongitude());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -59249,16 +61668,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.GPS_Position.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 latitude_ = 0F;
                 longitude_ = 0F;
                 return this;
@@ -59286,21 +61711,40 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.GPS_Position buildPartial() {
                 context.ContextOuterClass.GPS_Position result = new context.ContextOuterClass.GPS_Position(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.latitude_ = latitude_;
+                result.longitude_ = longitude_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.GPS_Position result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.latitude_ = latitude_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.longitude_ = longitude_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -59322,7 +61766,7 @@ public final class ContextOuterClass {
                 if (other.getLongitude() != 0F) {
                     setLongitude(other.getLongitude());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -59334,54 +61778,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.GPS_Position parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 13:
-                                {
-                                    latitude_ = input.readFloat();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 13
-                            case 21:
-                                {
-                                    longitude_ = input.readFloat();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 21
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.GPS_Position) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private float latitude_;
 
             /**
@@ -59400,7 +61810,6 @@ public final class ContextOuterClass {
              */
             public Builder setLatitude(float value) {
                 latitude_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -59410,7 +61819,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearLatitude() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 latitude_ = 0F;
                 onChanged();
                 return this;
@@ -59434,7 +61842,6 @@ public final class ContextOuterClass {
              */
             public Builder setLongitude(float value) {
                 longitude_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -59444,7 +61851,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearLongitude() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 longitude_ = 0F;
                 onChanged();
                 return this;
@@ -59477,17 +61883,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public GPS_Position parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new GPS_Position(input, extensionRegistry);
             }
         };
 
@@ -59544,7 +61940,7 @@ public final class ContextOuterClass {
          */
         context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder();
 
-        context.ContextOuterClass.Location.LocationCase getLocationCase();
+        public context.ContextOuterClass.Location.LocationCase getLocationCase();
     }
 
     /**
@@ -59569,6 +61965,65 @@ public final class ContextOuterClass {
             return new Location();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Location(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                locationCase_ = 1;
+                                location_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.GPS_Position.Builder subBuilder = null;
+                                if (locationCase_ == 2) {
+                                    subBuilder = ((context.ContextOuterClass.GPS_Position) location_).toBuilder();
+                                }
+                                location_ = input.readMessage(context.ContextOuterClass.GPS_Position.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.GPS_Position) location_);
+                                    location_ = subBuilder.buildPartial();
+                                }
+                                locationCase_ = 2;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Location_descriptor;
         }
@@ -59580,7 +62035,6 @@ public final class ContextOuterClass {
 
         private int locationCase_ = 0;
 
-        @SuppressWarnings("serial")
         private java.lang.Object location_;
 
         public enum LocationCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -59731,7 +62185,7 @@ public final class ContextOuterClass {
             if (locationCase_ == 2) {
                 output.writeMessage(2, (context.ContextOuterClass.GPS_Position) location_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -59746,7 +62200,7 @@ public final class ContextOuterClass {
             if (locationCase_ == 2) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (context.ContextOuterClass.GPS_Position) location_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -59774,7 +62228,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -59798,7 +62252,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -59892,19 +62346,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Location.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                if (gpsPositionBuilder_ != null) {
-                    gpsPositionBuilder_.clear();
-                }
                 locationCase_ = 0;
                 location_ = null;
                 return this;
@@ -59932,24 +62389,49 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Location buildPartial() {
                 context.ContextOuterClass.Location result = new context.ContextOuterClass.Location(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (locationCase_ == 1) {
+                    result.location_ = location_;
+                }
+                if (locationCase_ == 2) {
+                    if (gpsPositionBuilder_ == null) {
+                        result.location_ = location_;
+                    } else {
+                        result.location_ = gpsPositionBuilder_.build();
+                    }
                 }
-                buildPartialOneofs(result);
+                result.locationCase_ = locationCase_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Location result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
             }
 
-            private void buildPartialOneofs(context.ContextOuterClass.Location result) {
-                result.locationCase_ = locationCase_;
-                result.location_ = this.location_;
-                if (locationCase_ == 2 && gpsPositionBuilder_ != null) {
-                    result.location_ = gpsPositionBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -59983,7 +62465,7 @@ public final class ContextOuterClass {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -59995,50 +62477,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Location parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    java.lang.String s = input.readStringRequireUtf8();
-                                    locationCase_ = 1;
-                                    location_ = s;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getGpsPositionFieldBuilder().getBuilder(), extensionRegistry);
-                                    locationCase_ = 2;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Location) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -60057,8 +62506,6 @@ public final class ContextOuterClass {
                 return this;
             }
 
-            private int bitField0_;
-
             /**
              * <code>string region = 1;</code>
              * @return Whether the region field is set.
@@ -60230,9 +62677,8 @@ public final class ContextOuterClass {
                 } else {
                     if (locationCase_ == 2) {
                         gpsPositionBuilder_.mergeFrom(value);
-                    } else {
-                        gpsPositionBuilder_.setMessage(value);
                     }
+                    gpsPositionBuilder_.setMessage(value);
                 }
                 locationCase_ = 2;
                 return this;
@@ -60293,6 +62739,7 @@ public final class ContextOuterClass {
                 }
                 locationCase_ = 2;
                 onChanged();
+                ;
                 return gpsPositionBuilder_;
             }
 
@@ -60323,17 +62770,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Location parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Location(input, extensionRegistry);
             }
         };
 
@@ -60412,6 +62849,70 @@ public final class ContextOuterClass {
             return new Constraint_EndPointLocation();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_EndPointLocation(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
+                                if (endpointId_ != null) {
+                                    subBuilder = endpointId_.toBuilder();
+                                }
+                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointId_);
+                                    endpointId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.Location.Builder subBuilder = null;
+                                if (location_ != null) {
+                                    subBuilder = location_.toBuilder();
+                                }
+                                location_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(location_);
+                                    location_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
         }
@@ -60448,7 +62949,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+            return getEndpointId();
         }
 
         public static final int LOCATION_FIELD_NUMBER = 2;
@@ -60478,7 +62979,7 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder() {
-            return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
+            return getLocation();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -60502,7 +63003,7 @@ public final class ContextOuterClass {
             if (location_ != null) {
                 output.writeMessage(2, getLocation());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -60517,7 +63018,7 @@ public final class ContextOuterClass {
             if (location_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getLocation());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -60543,7 +63044,7 @@ public final class ContextOuterClass {
                 if (!getLocation().equals(other.getLocation()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -60563,7 +63064,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LOCATION_FIELD_NUMBER;
                 hash = (53 * hash) + getLocation().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -60657,24 +63158,32 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_EndPointLocation.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                location_ = null;
-                if (locationBuilder_ != null) {
-                    locationBuilder_.dispose();
+                if (locationBuilder_ == null) {
+                    location_ = null;
+                } else {
+                    location_ = null;
                     locationBuilder_ = null;
                 }
                 return this;
@@ -60702,21 +63211,48 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_EndPointLocation buildPartial() {
                 context.ContextOuterClass.Constraint_EndPointLocation result = new context.ContextOuterClass.Constraint_EndPointLocation(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (endpointIdBuilder_ == null) {
+                    result.endpointId_ = endpointId_;
+                } else {
+                    result.endpointId_ = endpointIdBuilder_.build();
+                }
+                if (locationBuilder_ == null) {
+                    result.location_ = location_;
+                } else {
+                    result.location_ = locationBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_EndPointLocation result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.location_ = locationBuilder_ == null ? location_ : locationBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -60738,7 +63274,7 @@ public final class ContextOuterClass {
                 if (other.hasLocation()) {
                     mergeLocation(other.getLocation());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -60750,54 +63286,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_EndPointLocation parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getLocationFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_EndPointLocation) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
@@ -60807,7 +63309,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return endpointIdBuilder_ != null || endpointId_ != null;
             }
 
             /**
@@ -60831,11 +63333,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -60845,11 +63346,10 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -60858,16 +63358,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
-                        getEndpointIdBuilder().mergeFrom(value);
+                    if (endpointId_ != null) {
+                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
                     } else {
                         endpointId_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -60875,13 +63374,13 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public Builder clearEndpointId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                    onChanged();
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -60889,7 +63388,6 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -60925,7 +63423,7 @@ public final class ContextOuterClass {
              * @return Whether the location field is set.
              */
             public boolean hasLocation() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return locationBuilder_ != null || location_ != null;
             }
 
             /**
@@ -60949,11 +63447,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     location_ = value;
+                    onChanged();
                 } else {
                     locationBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -60963,11 +63460,10 @@ public final class ContextOuterClass {
             public Builder setLocation(context.ContextOuterClass.Location.Builder builderForValue) {
                 if (locationBuilder_ == null) {
                     location_ = builderForValue.build();
+                    onChanged();
                 } else {
                     locationBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -60976,16 +63472,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeLocation(context.ContextOuterClass.Location value) {
                 if (locationBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && location_ != null && location_ != context.ContextOuterClass.Location.getDefaultInstance()) {
-                        getLocationBuilder().mergeFrom(value);
+                    if (location_ != null) {
+                        location_ = context.ContextOuterClass.Location.newBuilder(location_).mergeFrom(value).buildPartial();
                     } else {
                         location_ = value;
                     }
+                    onChanged();
                 } else {
                     locationBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -60993,13 +63488,13 @@ public final class ContextOuterClass {
              * <code>.context.Location location = 2;</code>
              */
             public Builder clearLocation() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                location_ = null;
-                if (locationBuilder_ != null) {
-                    locationBuilder_.dispose();
+                if (locationBuilder_ == null) {
+                    location_ = null;
+                    onChanged();
+                } else {
+                    location_ = null;
                     locationBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -61007,7 +63502,6 @@ public final class ContextOuterClass {
              * <code>.context.Location location = 2;</code>
              */
             public context.ContextOuterClass.Location.Builder getLocationBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getLocationFieldBuilder().getBuilder();
             }
@@ -61061,17 +63555,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_EndPointLocation parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_EndPointLocation(input, extensionRegistry);
             }
         };
 
@@ -61139,6 +63623,62 @@ public final class ContextOuterClass {
             return new Constraint_EndPointPriority();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_EndPointPriority(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
+                                if (endpointId_ != null) {
+                                    subBuilder = endpointId_.toBuilder();
+                                }
+                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointId_);
+                                    endpointId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                priority_ = input.readUInt32();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
         }
@@ -61175,12 +63715,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+            return getEndpointId();
         }
 
         public static final int PRIORITY_FIELD_NUMBER = 2;
 
-        private int priority_ = 0;
+        private int priority_;
 
         /**
          * <code>uint32 priority = 2;</code>
@@ -61212,7 +63752,7 @@ public final class ContextOuterClass {
             if (priority_ != 0) {
                 output.writeUInt32(2, priority_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -61227,7 +63767,7 @@ public final class ContextOuterClass {
             if (priority_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, priority_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -61249,7 +63789,7 @@ public final class ContextOuterClass {
             }
             if (getPriority() != other.getPriority())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -61267,7 +63807,7 @@ public final class ContextOuterClass {
             }
             hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
             hash = (53 * hash) + getPriority();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -61361,19 +63901,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_EndPointPriority.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
                 priority_ = 0;
@@ -61402,21 +63949,44 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_EndPointPriority buildPartial() {
                 context.ContextOuterClass.Constraint_EndPointPriority result = new context.ContextOuterClass.Constraint_EndPointPriority(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (endpointIdBuilder_ == null) {
+                    result.endpointId_ = endpointId_;
+                } else {
+                    result.endpointId_ = endpointIdBuilder_.build();
                 }
+                result.priority_ = priority_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_EndPointPriority result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.priority_ = priority_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -61438,7 +64008,7 @@ public final class ContextOuterClass {
                 if (other.getPriority() != 0) {
                     setPriority(other.getPriority());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -61450,54 +64020,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_EndPointPriority parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    priority_ = input.readUInt32();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_EndPointPriority) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.EndPointId endpointId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
@@ -61507,7 +64043,7 @@ public final class ContextOuterClass {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return endpointIdBuilder_ != null || endpointId_ != null;
             }
 
             /**
@@ -61531,11 +64067,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -61545,11 +64080,10 @@ public final class ContextOuterClass {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -61558,16 +64092,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
-                        getEndpointIdBuilder().mergeFrom(value);
+                    if (endpointId_ != null) {
+                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
                     } else {
                         endpointId_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -61575,13 +64108,13 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public Builder clearEndpointId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                    onChanged();
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -61589,7 +64122,6 @@ public final class ContextOuterClass {
              * <code>.context.EndPointId endpoint_id = 1;</code>
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -61634,7 +64166,6 @@ public final class ContextOuterClass {
              */
             public Builder setPriority(int value) {
                 priority_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -61644,7 +64175,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearPriority() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 priority_ = 0;
                 onChanged();
                 return this;
@@ -61677,17 +64207,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_EndPointPriority parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_EndPointPriority(input, extensionRegistry);
             }
         };
 
@@ -61738,6 +64258,49 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Latency();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_SLA_Latency(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 13:
+                            {
+                                e2ELatencyMs_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
         }
@@ -61749,7 +64312,7 @@ public final class ContextOuterClass {
 
         public static final int E2E_LATENCY_MS_FIELD_NUMBER = 1;
 
-        private float e2ELatencyMs_ = 0F;
+        private float e2ELatencyMs_;
 
         /**
          * <code>float e2e_latency_ms = 1;</code>
@@ -61775,10 +64338,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (java.lang.Float.floatToRawIntBits(e2ELatencyMs_) != 0) {
+            if (e2ELatencyMs_ != 0F) {
                 output.writeFloat(1, e2ELatencyMs_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -61787,10 +64350,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (java.lang.Float.floatToRawIntBits(e2ELatencyMs_) != 0) {
+            if (e2ELatencyMs_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, e2ELatencyMs_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -61806,7 +64369,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Constraint_SLA_Latency other = (context.ContextOuterClass.Constraint_SLA_Latency) obj;
             if (java.lang.Float.floatToIntBits(getE2ELatencyMs()) != java.lang.Float.floatToIntBits(other.getE2ELatencyMs()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -61820,7 +64383,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + E2E_LATENCY_MS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getE2ELatencyMs());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -61914,16 +64477,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Latency.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 e2ELatencyMs_ = 0F;
                 return this;
             }
@@ -61950,18 +64519,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Latency buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Latency result = new context.ContextOuterClass.Constraint_SLA_Latency(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.e2ELatencyMs_ = e2ELatencyMs_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Latency result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.e2ELatencyMs_ = e2ELatencyMs_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -61980,7 +64570,7 @@ public final class ContextOuterClass {
                 if (other.getE2ELatencyMs() != 0F) {
                     setE2ELatencyMs(other.getE2ELatencyMs());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -61992,47 +64582,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_SLA_Latency parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 13:
-                                {
-                                    e2ELatencyMs_ = input.readFloat();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 13
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Latency) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private float e2ELatencyMs_;
 
             /**
@@ -62051,7 +64614,6 @@ public final class ContextOuterClass {
              */
             public Builder setE2ELatencyMs(float value) {
                 e2ELatencyMs_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -62061,7 +64623,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearE2ELatencyMs() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 e2ELatencyMs_ = 0F;
                 onChanged();
                 return this;
@@ -62094,17 +64655,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Latency parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_SLA_Latency(input, extensionRegistry);
             }
         };
 
@@ -62155,6 +64706,49 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Capacity();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_SLA_Capacity(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 13:
+                            {
+                                capacityGbps_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
         }
@@ -62166,7 +64760,7 @@ public final class ContextOuterClass {
 
         public static final int CAPACITY_GBPS_FIELD_NUMBER = 1;
 
-        private float capacityGbps_ = 0F;
+        private float capacityGbps_;
 
         /**
          * <code>float capacity_gbps = 1;</code>
@@ -62192,10 +64786,10 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (java.lang.Float.floatToRawIntBits(capacityGbps_) != 0) {
+            if (capacityGbps_ != 0F) {
                 output.writeFloat(1, capacityGbps_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -62204,10 +64798,10 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (java.lang.Float.floatToRawIntBits(capacityGbps_) != 0) {
+            if (capacityGbps_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, capacityGbps_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -62223,7 +64817,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Constraint_SLA_Capacity other = (context.ContextOuterClass.Constraint_SLA_Capacity) obj;
             if (java.lang.Float.floatToIntBits(getCapacityGbps()) != java.lang.Float.floatToIntBits(other.getCapacityGbps()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -62237,7 +64831,7 @@ public final class ContextOuterClass {
             hash = (19 * hash) + getDescriptor().hashCode();
             hash = (37 * hash) + CAPACITY_GBPS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getCapacityGbps());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -62331,16 +64925,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 capacityGbps_ = 0F;
                 return this;
             }
@@ -62367,18 +64967,39 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Capacity buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Capacity result = new context.ContextOuterClass.Constraint_SLA_Capacity(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.capacityGbps_ = capacityGbps_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Capacity result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.capacityGbps_ = capacityGbps_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -62397,7 +65018,7 @@ public final class ContextOuterClass {
                 if (other.getCapacityGbps() != 0F) {
                     setCapacityGbps(other.getCapacityGbps());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -62409,47 +65030,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_SLA_Capacity parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 13:
-                                {
-                                    capacityGbps_ = input.readFloat();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 13
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Capacity) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private float capacityGbps_;
 
             /**
@@ -62468,7 +65062,6 @@ public final class ContextOuterClass {
              */
             public Builder setCapacityGbps(float value) {
                 capacityGbps_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -62478,7 +65071,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearCapacityGbps() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 capacityGbps_ = 0F;
                 onChanged();
                 return this;
@@ -62511,17 +65103,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Capacity parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_SLA_Capacity(input, extensionRegistry);
             }
         };
 
@@ -62588,6 +65170,59 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Availability();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_SLA_Availability(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                numDisjointPaths_ = input.readUInt32();
+                                break;
+                            }
+                        case 16:
+                            {
+                                allActive_ = input.readBool();
+                                break;
+                            }
+                        case 29:
+                            {
+                                availability_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
         }
@@ -62599,7 +65234,7 @@ public final class ContextOuterClass {
 
         public static final int NUM_DISJOINT_PATHS_FIELD_NUMBER = 1;
 
-        private int numDisjointPaths_ = 0;
+        private int numDisjointPaths_;
 
         /**
          * <code>uint32 num_disjoint_paths = 1;</code>
@@ -62612,7 +65247,7 @@ public final class ContextOuterClass {
 
         public static final int ALL_ACTIVE_FIELD_NUMBER = 2;
 
-        private boolean allActive_ = false;
+        private boolean allActive_;
 
         /**
          * <code>bool all_active = 2;</code>
@@ -62625,7 +65260,7 @@ public final class ContextOuterClass {
 
         public static final int AVAILABILITY_FIELD_NUMBER = 3;
 
-        private float availability_ = 0F;
+        private float availability_;
 
         /**
          * <pre>
@@ -62661,10 +65296,10 @@ public final class ContextOuterClass {
             if (allActive_ != false) {
                 output.writeBool(2, allActive_);
             }
-            if (java.lang.Float.floatToRawIntBits(availability_) != 0) {
+            if (availability_ != 0F) {
                 output.writeFloat(3, availability_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -62679,10 +65314,10 @@ public final class ContextOuterClass {
             if (allActive_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, allActive_);
             }
-            if (java.lang.Float.floatToRawIntBits(availability_) != 0) {
+            if (availability_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, availability_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -62702,7 +65337,7 @@ public final class ContextOuterClass {
                 return false;
             if (java.lang.Float.floatToIntBits(getAvailability()) != java.lang.Float.floatToIntBits(other.getAvailability()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -62720,7 +65355,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAllActive());
             hash = (37 * hash) + AVAILABILITY_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getAvailability());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -62814,16 +65449,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Availability.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 numDisjointPaths_ = 0;
                 allActive_ = false;
                 availability_ = 0F;
@@ -62852,24 +65493,41 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Availability buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Availability result = new context.ContextOuterClass.Constraint_SLA_Availability(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
+                result.numDisjointPaths_ = numDisjointPaths_;
+                result.allActive_ = allActive_;
+                result.availability_ = availability_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Availability result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.numDisjointPaths_ = numDisjointPaths_;
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.allActive_ = allActive_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.availability_ = availability_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -62894,7 +65552,7 @@ public final class ContextOuterClass {
                 if (other.getAvailability() != 0F) {
                     setAvailability(other.getAvailability());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -62906,61 +65564,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_SLA_Availability parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    numDisjointPaths_ = input.readUInt32();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 16:
-                                {
-                                    allActive_ = input.readBool();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            case 29:
-                                {
-                                    availability_ = input.readFloat();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 29
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Availability) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private int numDisjointPaths_;
 
             /**
@@ -62979,7 +65596,6 @@ public final class ContextOuterClass {
              */
             public Builder setNumDisjointPaths(int value) {
                 numDisjointPaths_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -62989,7 +65605,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearNumDisjointPaths() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 numDisjointPaths_ = 0;
                 onChanged();
                 return this;
@@ -63013,7 +65628,6 @@ public final class ContextOuterClass {
              */
             public Builder setAllActive(boolean value) {
                 allActive_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -63023,7 +65637,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAllActive() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 allActive_ = false;
                 onChanged();
                 return this;
@@ -63055,7 +65668,6 @@ public final class ContextOuterClass {
              */
             public Builder setAvailability(float value) {
                 availability_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -63069,7 +65681,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAvailability() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 availability_ = 0F;
                 onChanged();
                 return this;
@@ -63102,17 +65713,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Availability parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_SLA_Availability(input, extensionRegistry);
             }
         };
 
@@ -63190,6 +65791,73 @@ public final class ContextOuterClass {
             return new Constraint_SLA_Isolation_level();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_SLA_Isolation_level(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    isolationLevel_ = new java.util.ArrayList<java.lang.Integer>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                isolationLevel_.add(rawValue);
+                                break;
+                            }
+                        case 10:
+                            {
+                                int length = input.readRawVarint32();
+                                int oldLimit = input.pushLimit(length);
+                                while (input.getBytesUntilLimit() > 0) {
+                                    int rawValue = input.readEnum();
+                                    if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                        isolationLevel_ = new java.util.ArrayList<java.lang.Integer>();
+                                        mutable_bitField0_ |= 0x00000001;
+                                    }
+                                    isolationLevel_.add(rawValue);
+                                }
+                                input.popLimit(oldLimit);
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
         }
@@ -63201,13 +65869,13 @@ public final class ContextOuterClass {
 
         public static final int ISOLATION_LEVEL_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<java.lang.Integer> isolationLevel_;
 
         private static final com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum> isolationLevel_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>() {
 
             public context.ContextOuterClass.IsolationLevelEnum convert(java.lang.Integer from) {
-                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.forNumber(from);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.valueOf(from);
                 return result == null ? context.ContextOuterClass.IsolationLevelEnum.UNRECOGNIZED : result;
             }
         };
@@ -63284,7 +65952,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < isolationLevel_.size(); i++) {
                 output.writeEnumNoTag(isolationLevel_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -63305,7 +65973,7 @@ public final class ContextOuterClass {
                 }
                 isolationLevelMemoizedSerializedSize = dataSize;
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -63321,7 +65989,7 @@ public final class ContextOuterClass {
             context.ContextOuterClass.Constraint_SLA_Isolation_level other = (context.ContextOuterClass.Constraint_SLA_Isolation_level) obj;
             if (!isolationLevel_.equals(other.isolationLevel_))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -63337,7 +66005,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + ISOLATION_LEVEL_FIELD_NUMBER;
                 hash = (53 * hash) + isolationLevel_.hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -63431,16 +66099,22 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 isolationLevel_ = java.util.Collections.emptyList();
                 bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
@@ -63468,24 +66142,44 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_SLA_Isolation_level buildPartial() {
                 context.ContextOuterClass.Constraint_SLA_Isolation_level result = new context.ContextOuterClass.Constraint_SLA_Isolation_level(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Constraint_SLA_Isolation_level result) {
+                int from_bitField0_ = bitField0_;
                 if (((bitField0_ & 0x00000001) != 0)) {
                     isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
                     bitField0_ = (bitField0_ & ~0x00000001);
                 }
                 result.isolationLevel_ = isolationLevel_;
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Isolation_level result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -63511,7 +66205,7 @@ public final class ContextOuterClass {
                     }
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -63523,56 +66217,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_SLA_Isolation_level parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    int tmpRaw = input.readEnum();
-                                    ensureIsolationLevelIsMutable();
-                                    isolationLevel_.add(tmpRaw);
-                                    break;
-                                }
-                            // case 8
-                            case 10:
-                                {
-                                    int length = input.readRawVarint32();
-                                    int oldLimit = input.pushLimit(length);
-                                    while (input.getBytesUntilLimit() > 0) {
-                                        int tmpRaw = input.readEnum();
-                                        ensureIsolationLevelIsMutable();
-                                        isolationLevel_.add(tmpRaw);
-                                    }
-                                    input.popLimit(oldLimit);
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_SLA_Isolation_level) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -63687,8 +66342,8 @@ public final class ContextOuterClass {
 
             /**
              * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-             * @param index The index to set the value at.
-             * @param value The enum numeric value on the wire for isolationLevel to set.
+             * @param index The index of the value to return.
+             * @return The enum numeric value on the wire of isolationLevel at the given index.
              * @return This builder for chaining.
              */
             public Builder setIsolationLevelValue(int index, int value) {
@@ -63751,17 +66406,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_SLA_Isolation_level parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_SLA_Isolation_level(input, extensionRegistry);
             }
         };
 
@@ -63890,6 +66535,86 @@ public final class ContextOuterClass {
             return new Constraint_Exclusions();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint_Exclusions(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                isPermanent_ = input.readBool();
+                                break;
+                            }
+                        case 18:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                deviceIds_.add(input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                endpointIds_.add(input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
+                                    linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
+                                    mutable_bitField0_ |= 0x00000004;
+                                }
+                                linkIds_.add(input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
+                }
+                if (((mutable_bitField0_ & 0x00000004) != 0)) {
+                    linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
         }
@@ -63901,7 +66626,7 @@ public final class ContextOuterClass {
 
         public static final int IS_PERMANENT_FIELD_NUMBER = 1;
 
-        private boolean isPermanent_ = false;
+        private boolean isPermanent_;
 
         /**
          * <code>bool is_permanent = 1;</code>
@@ -63914,7 +66639,6 @@ public final class ContextOuterClass {
 
         public static final int DEVICE_IDS_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
 
         /**
@@ -63959,7 +66683,6 @@ public final class ContextOuterClass {
 
         public static final int ENDPOINT_IDS_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_;
 
         /**
@@ -64004,7 +66727,6 @@ public final class ContextOuterClass {
 
         public static final int LINK_IDS_FIELD_NUMBER = 4;
 
-        @SuppressWarnings("serial")
         private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
 
         /**
@@ -64074,7 +66796,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 output.writeMessage(4, linkIds_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -64095,7 +66817,7 @@ public final class ContextOuterClass {
             for (int i = 0; i < linkIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkIds_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -64117,7 +66839,7 @@ public final class ContextOuterClass {
                 return false;
             if (!getLinkIdsList().equals(other.getLinkIdsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -64143,7 +66865,7 @@ public final class ContextOuterClass {
                 hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkIdsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -64237,38 +66959,44 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint_Exclusions.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDeviceIdsFieldBuilder();
+                    getEndpointIdsFieldBuilder();
+                    getLinkIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 isPermanent_ = false;
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    deviceIds_ = null;
                     deviceIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000002);
                 if (endpointIdsBuilder_ == null) {
                     endpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
                 } else {
-                    endpointIds_ = null;
                     endpointIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
                 } else {
-                    linkIds_ = null;
                     linkIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000008);
                 return this;
             }
 
@@ -64294,49 +67022,67 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint_Exclusions buildPartial() {
                 context.ContextOuterClass.Constraint_Exclusions result = new context.ContextOuterClass.Constraint_Exclusions(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(context.ContextOuterClass.Constraint_Exclusions result) {
+                int from_bitField0_ = bitField0_;
+                result.isPermanent_ = isPermanent_;
                 if (deviceIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.deviceIds_ = deviceIds_;
                 } else {
                     result.deviceIds_ = deviceIdsBuilder_.build();
                 }
                 if (endpointIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
                         endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000002);
                     }
                     result.endpointIds_ = endpointIds_;
                 } else {
                     result.endpointIds_ = endpointIdsBuilder_.build();
                 }
                 if (linkIdsBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0)) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
                         linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-                        bitField0_ = (bitField0_ & ~0x00000008);
+                        bitField0_ = (bitField0_ & ~0x00000004);
                     }
                     result.linkIds_ = linkIds_;
                 } else {
                     result.linkIds_ = linkIdsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.Constraint_Exclusions result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.isPermanent_ = isPermanent_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -64359,7 +67105,7 @@ public final class ContextOuterClass {
                     if (!other.deviceIds_.isEmpty()) {
                         if (deviceIds_.isEmpty()) {
                             deviceIds_ = other.deviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureDeviceIdsIsMutable();
                             deviceIds_.addAll(other.deviceIds_);
@@ -64372,7 +67118,7 @@ public final class ContextOuterClass {
                             deviceIdsBuilder_.dispose();
                             deviceIdsBuilder_ = null;
                             deviceIds_ = other.deviceIds_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null;
                         } else {
                             deviceIdsBuilder_.addAllMessages(other.deviceIds_);
@@ -64383,7 +67129,7 @@ public final class ContextOuterClass {
                     if (!other.endpointIds_.isEmpty()) {
                         if (endpointIds_.isEmpty()) {
                             endpointIds_ = other.endpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                         } else {
                             ensureEndpointIdsIsMutable();
                             endpointIds_.addAll(other.endpointIds_);
@@ -64396,7 +67142,7 @@ public final class ContextOuterClass {
                             endpointIdsBuilder_.dispose();
                             endpointIdsBuilder_ = null;
                             endpointIds_ = other.endpointIds_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000002);
                             endpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEndpointIdsFieldBuilder() : null;
                         } else {
                             endpointIdsBuilder_.addAllMessages(other.endpointIds_);
@@ -64407,7 +67153,7 @@ public final class ContextOuterClass {
                     if (!other.linkIds_.isEmpty()) {
                         if (linkIds_.isEmpty()) {
                             linkIds_ = other.linkIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                         } else {
                             ensureLinkIdsIsMutable();
                             linkIds_.addAll(other.linkIds_);
@@ -64420,14 +67166,14 @@ public final class ContextOuterClass {
                             linkIdsBuilder_.dispose();
                             linkIdsBuilder_ = null;
                             linkIds_ = other.linkIds_;
-                            bitField0_ = (bitField0_ & ~0x00000008);
+                            bitField0_ = (bitField0_ & ~0x00000004);
                             linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null;
                         } else {
                             linkIdsBuilder_.addAllMessages(other.linkIds_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -64439,78 +67185,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint_Exclusions parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    isPermanent_ = input.readBool();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 18:
-                                {
-                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-                                    if (deviceIdsBuilder_ == null) {
-                                        ensureDeviceIdsIsMutable();
-                                        deviceIds_.add(m);
-                                    } else {
-                                        deviceIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-                                    if (endpointIdsBuilder_ == null) {
-                                        ensureEndpointIdsIsMutable();
-                                        endpointIds_.add(m);
-                                    } else {
-                                        endpointIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-                                    if (linkIdsBuilder_ == null) {
-                                        ensureLinkIdsIsMutable();
-                                        linkIds_.add(m);
-                                    } else {
-                                        linkIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 34
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint_Exclusions) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -64534,7 +67219,6 @@ public final class ContextOuterClass {
              */
             public Builder setIsPermanent(boolean value) {
                 isPermanent_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -64544,7 +67228,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearIsPermanent() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 isPermanent_ = false;
                 onChanged();
                 return this;
@@ -64553,9 +67236,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ = java.util.Collections.emptyList();
 
             private void ensureDeviceIdsIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -64707,7 +67390,7 @@ public final class ContextOuterClass {
             public Builder clearDeviceIds() {
                 if (deviceIdsBuilder_ == null) {
                     deviceIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     deviceIdsBuilder_.clear();
@@ -64781,7 +67464,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsFieldBuilder() {
                 if (deviceIdsBuilder_ == null) {
-                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     deviceIds_ = null;
                 }
                 return deviceIdsBuilder_;
@@ -64790,9 +67473,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_ = java.util.Collections.emptyList();
 
             private void ensureEndpointIdsIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000002) != 0)) {
                     endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(endpointIds_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000002;
                 }
             }
 
@@ -64944,7 +67627,7 @@ public final class ContextOuterClass {
             public Builder clearEndpointIds() {
                 if (endpointIdsBuilder_ == null) {
                     endpointIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000002);
                     onChanged();
                 } else {
                     endpointIdsBuilder_.clear();
@@ -65018,7 +67701,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsFieldBuilder() {
                 if (endpointIdsBuilder_ == null) {
-                    endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(endpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(endpointIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                     endpointIds_ = null;
                 }
                 return endpointIdsBuilder_;
@@ -65027,9 +67710,9 @@ public final class ContextOuterClass {
             private java.util.List<context.ContextOuterClass.LinkId> linkIds_ = java.util.Collections.emptyList();
 
             private void ensureLinkIdsIsMutable() {
-                if (!((bitField0_ & 0x00000008) != 0)) {
+                if (!((bitField0_ & 0x00000004) != 0)) {
                     linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
-                    bitField0_ |= 0x00000008;
+                    bitField0_ |= 0x00000004;
                 }
             }
 
@@ -65181,7 +67864,7 @@ public final class ContextOuterClass {
             public Builder clearLinkIds() {
                 if (linkIdsBuilder_ == null) {
                     linkIds_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000008);
+                    bitField0_ = (bitField0_ & ~0x00000004);
                     onChanged();
                 } else {
                     linkIdsBuilder_.clear();
@@ -65255,7 +67938,7 @@ public final class ContextOuterClass {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsFieldBuilder() {
                 if (linkIdsBuilder_ == null) {
-                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                     linkIds_ = null;
                 }
                 return linkIdsBuilder_;
@@ -65288,17 +67971,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint_Exclusions parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint_Exclusions(input, extensionRegistry);
             }
         };
 
@@ -65485,7 +68158,7 @@ public final class ContextOuterClass {
          */
         context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder();
 
-        context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase();
+        public context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase();
     }
 
     /**
@@ -65511,6 +68184,176 @@ public final class ContextOuterClass {
             return new Constraint();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Constraint(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                int rawValue = input.readEnum();
+                                action_ = rawValue;
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.Constraint_Custom.Builder subBuilder = null;
+                                if (constraintCase_ == 2) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_Custom) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_Custom.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Custom) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 2;
+                                break;
+                            }
+                        case 26:
+                            {
+                                context.ContextOuterClass.Constraint_Schedule.Builder subBuilder = null;
+                                if (constraintCase_ == 3) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_Schedule) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_Schedule.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Schedule) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 3;
+                                break;
+                            }
+                        case 34:
+                            {
+                                context.ContextOuterClass.Constraint_EndPointLocation.Builder subBuilder = null;
+                                if (constraintCase_ == 4) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_EndPointLocation) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_EndPointLocation.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 4;
+                                break;
+                            }
+                        case 42:
+                            {
+                                context.ContextOuterClass.Constraint_EndPointPriority.Builder subBuilder = null;
+                                if (constraintCase_ == 5) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_EndPointPriority) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_EndPointPriority.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 5;
+                                break;
+                            }
+                        case 50:
+                            {
+                                context.ContextOuterClass.Constraint_SLA_Capacity.Builder subBuilder = null;
+                                if (constraintCase_ == 6) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Capacity.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 6;
+                                break;
+                            }
+                        case 58:
+                            {
+                                context.ContextOuterClass.Constraint_SLA_Latency.Builder subBuilder = null;
+                                if (constraintCase_ == 7) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Latency) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Latency.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 7;
+                                break;
+                            }
+                        case 66:
+                            {
+                                context.ContextOuterClass.Constraint_SLA_Availability.Builder subBuilder = null;
+                                if (constraintCase_ == 8) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Availability) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Availability.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 8;
+                                break;
+                            }
+                        case 74:
+                            {
+                                context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder subBuilder = null;
+                                if (constraintCase_ == 9) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_SLA_Isolation_level.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 9;
+                                break;
+                            }
+                        case 82:
+                            {
+                                context.ContextOuterClass.Constraint_Exclusions.Builder subBuilder = null;
+                                if (constraintCase_ == 10) {
+                                    subBuilder = ((context.ContextOuterClass.Constraint_Exclusions) constraint_).toBuilder();
+                                }
+                                constraint_ = input.readMessage(context.ContextOuterClass.Constraint_Exclusions.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Exclusions) constraint_);
+                                    constraint_ = subBuilder.buildPartial();
+                                }
+                                constraintCase_ = 10;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
         }
@@ -65522,7 +68365,6 @@ public final class ContextOuterClass {
 
         private int constraintCase_ = 0;
 
-        @SuppressWarnings("serial")
         private java.lang.Object constraint_;
 
         public enum ConstraintCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -65592,7 +68434,7 @@ public final class ContextOuterClass {
 
         public static final int ACTION_FIELD_NUMBER = 1;
 
-        private int action_ = 0;
+        private int action_;
 
         /**
          * <code>.context.ConstraintActionEnum action = 1;</code>
@@ -65609,7 +68451,8 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConstraintActionEnum getAction() {
-            context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.forNumber(action_);
+            @SuppressWarnings("deprecation")
+            context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.valueOf(action_);
             return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
         }
 
@@ -65964,7 +68807,7 @@ public final class ContextOuterClass {
             if (constraintCase_ == 10) {
                 output.writeMessage(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -66003,7 +68846,7 @@ public final class ContextOuterClass {
             if (constraintCase_ == 10) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -66061,7 +68904,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -66115,7 +68958,7 @@ public final class ContextOuterClass {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -66209,44 +69052,23 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.Constraint.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 action_ = 0;
-                if (customBuilder_ != null) {
-                    customBuilder_.clear();
-                }
-                if (scheduleBuilder_ != null) {
-                    scheduleBuilder_.clear();
-                }
-                if (endpointLocationBuilder_ != null) {
-                    endpointLocationBuilder_.clear();
-                }
-                if (endpointPriorityBuilder_ != null) {
-                    endpointPriorityBuilder_.clear();
-                }
-                if (slaCapacityBuilder_ != null) {
-                    slaCapacityBuilder_.clear();
-                }
-                if (slaLatencyBuilder_ != null) {
-                    slaLatencyBuilder_.clear();
-                }
-                if (slaAvailabilityBuilder_ != null) {
-                    slaAvailabilityBuilder_.clear();
-                }
-                if (slaIsolationBuilder_ != null) {
-                    slaIsolationBuilder_.clear();
-                }
-                if (exclusionsBuilder_ != null) {
-                    exclusionsBuilder_.clear();
-                }
                 constraintCase_ = 0;
                 constraint_ = null;
                 return this;
@@ -66274,51 +69096,103 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.Constraint buildPartial() {
                 context.ContextOuterClass.Constraint result = new context.ContextOuterClass.Constraint(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                buildPartialOneofs(result);
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartial0(context.ContextOuterClass.Constraint result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.action_ = action_;
-                }
-            }
-
-            private void buildPartialOneofs(context.ContextOuterClass.Constraint result) {
-                result.constraintCase_ = constraintCase_;
-                result.constraint_ = this.constraint_;
-                if (constraintCase_ == 2 && customBuilder_ != null) {
-                    result.constraint_ = customBuilder_.build();
+                result.action_ = action_;
+                if (constraintCase_ == 2) {
+                    if (customBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = customBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 3 && scheduleBuilder_ != null) {
-                    result.constraint_ = scheduleBuilder_.build();
+                if (constraintCase_ == 3) {
+                    if (scheduleBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = scheduleBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 4 && endpointLocationBuilder_ != null) {
-                    result.constraint_ = endpointLocationBuilder_.build();
+                if (constraintCase_ == 4) {
+                    if (endpointLocationBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = endpointLocationBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 5 && endpointPriorityBuilder_ != null) {
-                    result.constraint_ = endpointPriorityBuilder_.build();
+                if (constraintCase_ == 5) {
+                    if (endpointPriorityBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = endpointPriorityBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 6 && slaCapacityBuilder_ != null) {
-                    result.constraint_ = slaCapacityBuilder_.build();
+                if (constraintCase_ == 6) {
+                    if (slaCapacityBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = slaCapacityBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 7 && slaLatencyBuilder_ != null) {
-                    result.constraint_ = slaLatencyBuilder_.build();
+                if (constraintCase_ == 7) {
+                    if (slaLatencyBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = slaLatencyBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 8 && slaAvailabilityBuilder_ != null) {
-                    result.constraint_ = slaAvailabilityBuilder_.build();
+                if (constraintCase_ == 8) {
+                    if (slaAvailabilityBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = slaAvailabilityBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 9 && slaIsolationBuilder_ != null) {
-                    result.constraint_ = slaIsolationBuilder_.build();
+                if (constraintCase_ == 9) {
+                    if (slaIsolationBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = slaIsolationBuilder_.build();
+                    }
                 }
-                if (constraintCase_ == 10 && exclusionsBuilder_ != null) {
-                    result.constraint_ = exclusionsBuilder_.build();
+                if (constraintCase_ == 10) {
+                    if (exclusionsBuilder_ == null) {
+                        result.constraint_ = constraint_;
+                    } else {
+                        result.constraint_ = exclusionsBuilder_.build();
+                    }
                 }
+                result.constraintCase_ = constraintCase_;
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -66388,7 +69262,7 @@ public final class ContextOuterClass {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -66400,105 +69274,17 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.Constraint parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    action_ = input.readEnum();
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 8
-                            case 18:
-                                {
-                                    input.readMessage(getCustomFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 2;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getScheduleFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 3;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    input.readMessage(getEndpointLocationFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 4;
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    input.readMessage(getEndpointPriorityFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 5;
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    input.readMessage(getSlaCapacityFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 6;
-                                    break;
-                                }
-                            // case 50
-                            case 58:
-                                {
-                                    input.readMessage(getSlaLatencyFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 7;
-                                    break;
-                                }
-                            // case 58
-                            case 66:
-                                {
-                                    input.readMessage(getSlaAvailabilityFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 8;
-                                    break;
-                                }
-                            // case 66
-                            case 74:
-                                {
-                                    input.readMessage(getSlaIsolationFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 9;
-                                    break;
-                                }
-                            // case 74
-                            case 82:
-                                {
-                                    input.readMessage(getExclusionsFieldBuilder().getBuilder(), extensionRegistry);
-                                    constraintCase_ = 10;
-                                    break;
-                                }
-                            // case 82
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Constraint) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -66517,8 +69303,6 @@ public final class ContextOuterClass {
                 return this;
             }
 
-            private int bitField0_;
-
             private int action_ = 0;
 
             /**
@@ -66537,7 +69321,6 @@ public final class ContextOuterClass {
              */
             public Builder setActionValue(int value) {
                 action_ = value;
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -66548,7 +69331,8 @@ public final class ContextOuterClass {
              */
             @java.lang.Override
             public context.ContextOuterClass.ConstraintActionEnum getAction() {
-                context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.forNumber(action_);
+                @SuppressWarnings("deprecation")
+                context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.valueOf(action_);
                 return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
             }
 
@@ -66561,7 +69345,6 @@ public final class ContextOuterClass {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000001;
                 action_ = value.getNumber();
                 onChanged();
                 return this;
@@ -66572,7 +69355,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearAction() {
-                bitField0_ = (bitField0_ & ~0x00000001);
                 action_ = 0;
                 onChanged();
                 return this;
@@ -66653,9 +69435,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 2) {
                         customBuilder_.mergeFrom(value);
-                    } else {
-                        customBuilder_.setMessage(value);
                     }
+                    customBuilder_.setMessage(value);
                 }
                 constraintCase_ = 2;
                 return this;
@@ -66716,6 +69497,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 2;
                 onChanged();
+                ;
                 return customBuilder_;
             }
 
@@ -66794,9 +69576,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 3) {
                         scheduleBuilder_.mergeFrom(value);
-                    } else {
-                        scheduleBuilder_.setMessage(value);
                     }
+                    scheduleBuilder_.setMessage(value);
                 }
                 constraintCase_ = 3;
                 return this;
@@ -66857,6 +69638,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 3;
                 onChanged();
+                ;
                 return scheduleBuilder_;
             }
 
@@ -66935,9 +69717,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 4) {
                         endpointLocationBuilder_.mergeFrom(value);
-                    } else {
-                        endpointLocationBuilder_.setMessage(value);
                     }
+                    endpointLocationBuilder_.setMessage(value);
                 }
                 constraintCase_ = 4;
                 return this;
@@ -66998,6 +69779,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 4;
                 onChanged();
+                ;
                 return endpointLocationBuilder_;
             }
 
@@ -67076,9 +69858,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 5) {
                         endpointPriorityBuilder_.mergeFrom(value);
-                    } else {
-                        endpointPriorityBuilder_.setMessage(value);
                     }
+                    endpointPriorityBuilder_.setMessage(value);
                 }
                 constraintCase_ = 5;
                 return this;
@@ -67139,6 +69920,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 5;
                 onChanged();
+                ;
                 return endpointPriorityBuilder_;
             }
 
@@ -67217,9 +69999,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 6) {
                         slaCapacityBuilder_.mergeFrom(value);
-                    } else {
-                        slaCapacityBuilder_.setMessage(value);
                     }
+                    slaCapacityBuilder_.setMessage(value);
                 }
                 constraintCase_ = 6;
                 return this;
@@ -67280,6 +70061,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 6;
                 onChanged();
+                ;
                 return slaCapacityBuilder_;
             }
 
@@ -67358,9 +70140,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 7) {
                         slaLatencyBuilder_.mergeFrom(value);
-                    } else {
-                        slaLatencyBuilder_.setMessage(value);
                     }
+                    slaLatencyBuilder_.setMessage(value);
                 }
                 constraintCase_ = 7;
                 return this;
@@ -67421,6 +70202,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 7;
                 onChanged();
+                ;
                 return slaLatencyBuilder_;
             }
 
@@ -67499,9 +70281,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 8) {
                         slaAvailabilityBuilder_.mergeFrom(value);
-                    } else {
-                        slaAvailabilityBuilder_.setMessage(value);
                     }
+                    slaAvailabilityBuilder_.setMessage(value);
                 }
                 constraintCase_ = 8;
                 return this;
@@ -67562,6 +70343,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 8;
                 onChanged();
+                ;
                 return slaAvailabilityBuilder_;
             }
 
@@ -67640,9 +70422,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 9) {
                         slaIsolationBuilder_.mergeFrom(value);
-                    } else {
-                        slaIsolationBuilder_.setMessage(value);
                     }
+                    slaIsolationBuilder_.setMessage(value);
                 }
                 constraintCase_ = 9;
                 return this;
@@ -67703,6 +70484,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 9;
                 onChanged();
+                ;
                 return slaIsolationBuilder_;
             }
 
@@ -67781,9 +70563,8 @@ public final class ContextOuterClass {
                 } else {
                     if (constraintCase_ == 10) {
                         exclusionsBuilder_.mergeFrom(value);
-                    } else {
-                        exclusionsBuilder_.setMessage(value);
                     }
+                    exclusionsBuilder_.setMessage(value);
                 }
                 constraintCase_ = 10;
                 return this;
@@ -67844,6 +70625,7 @@ public final class ContextOuterClass {
                 }
                 constraintCase_ = 10;
                 onChanged();
+                ;
                 return exclusionsBuilder_;
             }
 
@@ -67874,17 +70656,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Constraint parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Constraint(input, extensionRegistry);
             }
         };
 
@@ -67969,6 +70741,68 @@ public final class ContextOuterClass {
             return new TeraFlowController();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private TeraFlowController(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                ipAddress_ = s;
+                                break;
+                            }
+                        case 24:
+                            {
+                                port_ = input.readUInt32();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
         }
@@ -68005,13 +70839,12 @@ public final class ContextOuterClass {
          */
         @java.lang.Override
         public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            return getContextId();
         }
 
         public static final int IP_ADDRESS_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object ipAddress_ = "";
+        private volatile java.lang.Object ipAddress_;
 
         /**
          * <code>string ip_address = 2;</code>
@@ -68048,7 +70881,7 @@ public final class ContextOuterClass {
 
         public static final int PORT_FIELD_NUMBER = 3;
 
-        private int port_ = 0;
+        private int port_;
 
         /**
          * <code>uint32 port = 3;</code>
@@ -68077,13 +70910,13 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 output.writeMessage(1, getContextId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipAddress_)) {
+            if (!getIpAddressBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ipAddress_);
             }
             if (port_ != 0) {
                 output.writeUInt32(3, port_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -68095,13 +70928,13 @@ public final class ContextOuterClass {
             if (contextId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipAddress_)) {
+            if (!getIpAddressBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ipAddress_);
             }
             if (port_ != 0) {
                 size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, port_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -68125,7 +70958,7 @@ public final class ContextOuterClass {
                 return false;
             if (getPort() != other.getPort())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -68145,7 +70978,7 @@ public final class ContextOuterClass {
             hash = (53 * hash) + getIpAddress().hashCode();
             hash = (37 * hash) + PORT_FIELD_NUMBER;
             hash = (53 * hash) + getPort();
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -68243,19 +71076,26 @@ public final class ContextOuterClass {
 
             // Construct using context.ContextOuterClass.TeraFlowController.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
                 ipAddress_ = "";
@@ -68285,24 +71125,45 @@ public final class ContextOuterClass {
             @java.lang.Override
             public context.ContextOuterClass.TeraFlowController buildPartial() {
                 context.ContextOuterClass.TeraFlowController result = new context.ContextOuterClass.TeraFlowController(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
                 }
+                result.ipAddress_ = ipAddress_;
+                result.port_ = port_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.TeraFlowController result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.ipAddress_ = ipAddress_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.port_ = port_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -68323,13 +71184,12 @@ public final class ContextOuterClass {
                 }
                 if (!other.getIpAddress().isEmpty()) {
                     ipAddress_ = other.ipAddress_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.getPort() != 0) {
                     setPort(other.getPort());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -68341,61 +71201,20 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.TeraFlowController parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    ipAddress_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 24:
-                                {
-                                    port_ = input.readUInt32();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.TeraFlowController) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.ContextId contextId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
@@ -68405,7 +71224,7 @@ public final class ContextOuterClass {
              * @return Whether the contextId field is set.
              */
             public boolean hasContextId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return contextIdBuilder_ != null || contextId_ != null;
             }
 
             /**
@@ -68429,11 +71248,10 @@ public final class ContextOuterClass {
                         throw new NullPointerException();
                     }
                     contextId_ = value;
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -68443,11 +71261,10 @@ public final class ContextOuterClass {
             public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                 if (contextIdBuilder_ == null) {
                     contextId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     contextIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -68456,16 +71273,15 @@ public final class ContextOuterClass {
              */
             public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                 if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
                     } else {
                         contextId_ = value;
                     }
+                    onChanged();
                 } else {
                     contextIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -68473,13 +71289,13 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
                     contextIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -68487,7 +71303,6 @@ public final class ContextOuterClass {
              * <code>.context.ContextId context_id = 1;</code>
              */
             public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getContextIdFieldBuilder().getBuilder();
             }
@@ -68557,7 +71372,6 @@ public final class ContextOuterClass {
                     throw new NullPointerException();
                 }
                 ipAddress_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -68568,7 +71382,6 @@ public final class ContextOuterClass {
              */
             public Builder clearIpAddress() {
                 ipAddress_ = getDefaultInstance().getIpAddress();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -68584,7 +71397,6 @@ public final class ContextOuterClass {
                 }
                 checkByteStringIsUtf8(value);
                 ipAddress_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -68607,7 +71419,6 @@ public final class ContextOuterClass {
              */
             public Builder setPort(int value) {
                 port_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -68617,7 +71428,6 @@ public final class ContextOuterClass {
              * @return This builder for chaining.
              */
             public Builder clearPort() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 port_ = 0;
                 onChanged();
                 return this;
@@ -68650,17 +71460,7 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public TeraFlowController parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new TeraFlowController(input, extensionRegistry);
             }
         };
 
@@ -68728,56 +71528,7192 @@ public final class ContextOuterClass {
             return new AuthenticationResult();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AuthenticationResult(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.ContextId.Builder subBuilder = null;
+                                if (contextId_ != null) {
+                                    subBuilder = contextId_.toBuilder();
+                                }
+                                contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(contextId_);
+                                    contextId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                authenticated_ = input.readBool();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
+        }
+
+        public static final int CONTEXT_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.ContextId contextId_;
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        @java.lang.Override
+        public boolean hasContextId() {
+            return contextId_ != null;
+        }
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextId getContextId() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+            return getContextId();
+        }
+
+        public static final int AUTHENTICATED_FIELD_NUMBER = 2;
+
+        private boolean authenticated_;
+
+        /**
+         * <code>bool authenticated = 2;</code>
+         * @return The authenticated.
+         */
+        @java.lang.Override
+        public boolean getAuthenticated() {
+            return authenticated_;
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (contextId_ != null) {
+                output.writeMessage(1, getContextId());
+            }
+            if (authenticated_ != false) {
+                output.writeBool(2, authenticated_);
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (contextId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
+            }
+            if (authenticated_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, authenticated_);
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.AuthenticationResult)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.AuthenticationResult other = (context.ContextOuterClass.AuthenticationResult) obj;
+            if (hasContextId() != other.hasContextId())
+                return false;
+            if (hasContextId()) {
+                if (!getContextId().equals(other.getContextId()))
+                    return false;
+            }
+            if (getAuthenticated() != other.getAuthenticated())
+                return false;
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasContextId()) {
+                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getContextId().hashCode();
+            }
+            hash = (37 * hash) + AUTHENTICATED_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAuthenticated());
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.AuthenticationResult prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.AuthenticationResult}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.AuthenticationResult)
+        context.ContextOuterClass.AuthenticationResultOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.AuthenticationResult.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                } else {
+                    contextId_ = null;
+                    contextIdBuilder_ = null;
+                }
+                authenticated_ = false;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
+                return context.ContextOuterClass.AuthenticationResult.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.AuthenticationResult build() {
+                context.ContextOuterClass.AuthenticationResult result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.AuthenticationResult buildPartial() {
+                context.ContextOuterClass.AuthenticationResult result = new context.ContextOuterClass.AuthenticationResult(this);
+                if (contextIdBuilder_ == null) {
+                    result.contextId_ = contextId_;
+                } else {
+                    result.contextId_ = contextIdBuilder_.build();
+                }
+                result.authenticated_ = authenticated_;
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.AuthenticationResult) {
+                    return mergeFrom((context.ContextOuterClass.AuthenticationResult) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.AuthenticationResult other) {
+                if (other == context.ContextOuterClass.AuthenticationResult.getDefaultInstance())
+                    return this;
+                if (other.hasContextId()) {
+                    mergeContextId(other.getContextId());
+                }
+                if (other.getAuthenticated() != false) {
+                    setAuthenticated(other.getAuthenticated());
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.AuthenticationResult parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.AuthenticationResult) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private context.ContextOuterClass.ContextId contextId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return Whether the contextId field is set.
+             */
+            public boolean hasContextId() {
+                return contextIdBuilder_ != null || contextId_ != null;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return The contextId.
+             */
+            public context.ContextOuterClass.ContextId getContextId() {
+                if (contextIdBuilder_ == null) {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                } else {
+                    return contextIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    contextId_ = value;
+                    onChanged();
+                } else {
+                    contextIdBuilder_.setMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
+                if (contextIdBuilder_ == null) {
+                    contextId_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    contextIdBuilder_.setMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (contextId_ != null) {
+                        contextId_ = context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
+                    } else {
+                        contextId_ = value;
+                    }
+                    onChanged();
+                } else {
+                    contextIdBuilder_.mergeFrom(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder clearContextId() {
+                if (contextIdBuilder_ == null) {
+                    contextId_ = null;
+                    onChanged();
+                } else {
+                    contextId_ = null;
+                    contextIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                onChanged();
+                return getContextIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+                if (contextIdBuilder_ != null) {
+                    return contextIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
+                if (contextIdBuilder_ == null) {
+                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
+                    contextId_ = null;
+                }
+                return contextIdBuilder_;
+            }
+
+            private boolean authenticated_;
+
+            /**
+             * <code>bool authenticated = 2;</code>
+             * @return The authenticated.
+             */
+            @java.lang.Override
+            public boolean getAuthenticated() {
+                return authenticated_;
+            }
+
+            /**
+             * <code>bool authenticated = 2;</code>
+             * @param value The authenticated to set.
+             * @return This builder for chaining.
+             */
+            public Builder setAuthenticated(boolean value) {
+                authenticated_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool authenticated = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearAuthenticated() {
+                authenticated_ = false;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.AuthenticationResult)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.AuthenticationResult)
+        private static final context.ContextOuterClass.AuthenticationResult DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.AuthenticationResult();
+        }
+
+        public static context.ContextOuterClass.AuthenticationResult getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<AuthenticationResult> PARSER = new com.google.protobuf.AbstractParser<AuthenticationResult>() {
+
+            @java.lang.Override
+            public AuthenticationResult parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new AuthenticationResult(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<AuthenticationResult> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<AuthenticationResult> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface OpticalConfigIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>string opticalconfig_uuid = 1;</code>
+         * @return The opticalconfigUuid.
+         */
+        java.lang.String getOpticalconfigUuid();
+
+        /**
+         * <code>string opticalconfig_uuid = 1;</code>
+         * @return The bytes for opticalconfigUuid.
+         */
+        com.google.protobuf.ByteString getOpticalconfigUuidBytes();
+    }
+
+    /**
+     * <pre>
+     * ---------------- Experimental ------------------------
+     * </pre>
+     *
+     * Protobuf type {@code context.OpticalConfigId}
+     */
+    public static final class OpticalConfigId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigId)
+    OpticalConfigIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use OpticalConfigId.newBuilder() to construct.
+        private OpticalConfigId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private OpticalConfigId() {
+            opticalconfigUuid_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new OpticalConfigId();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private OpticalConfigId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                opticalconfigUuid_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class);
+        }
+
+        public static final int OPTICALCONFIG_UUID_FIELD_NUMBER = 1;
+
+        private volatile java.lang.Object opticalconfigUuid_;
+
+        /**
+         * <code>string opticalconfig_uuid = 1;</code>
+         * @return The opticalconfigUuid.
+         */
+        @java.lang.Override
+        public java.lang.String getOpticalconfigUuid() {
+            java.lang.Object ref = opticalconfigUuid_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                opticalconfigUuid_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string opticalconfig_uuid = 1;</code>
+         * @return The bytes for opticalconfigUuid.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getOpticalconfigUuidBytes() {
+            java.lang.Object ref = opticalconfigUuid_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                opticalconfigUuid_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (!getOpticalconfigUuidBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, opticalconfigUuid_);
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (!getOpticalconfigUuidBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, opticalconfigUuid_);
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.OpticalConfigId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.OpticalConfigId other = (context.ContextOuterClass.OpticalConfigId) obj;
+            if (!getOpticalconfigUuid().equals(other.getOpticalconfigUuid()))
+                return false;
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            hash = (37 * hash) + OPTICALCONFIG_UUID_FIELD_NUMBER;
+            hash = (53 * hash) + getOpticalconfigUuid().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.OpticalConfigId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * <pre>
+         * ---------------- Experimental ------------------------
+         * </pre>
+         *
+         * Protobuf type {@code context.OpticalConfigId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigId)
+        context.ContextOuterClass.OpticalConfigIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.OpticalConfigId.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                opticalconfigUuid_ = "";
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() {
+                return context.ContextOuterClass.OpticalConfigId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfigId build() {
+                context.ContextOuterClass.OpticalConfigId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfigId buildPartial() {
+                context.ContextOuterClass.OpticalConfigId result = new context.ContextOuterClass.OpticalConfigId(this);
+                result.opticalconfigUuid_ = opticalconfigUuid_;
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.OpticalConfigId) {
+                    return mergeFrom((context.ContextOuterClass.OpticalConfigId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.OpticalConfigId other) {
+                if (other == context.ContextOuterClass.OpticalConfigId.getDefaultInstance())
+                    return this;
+                if (!other.getOpticalconfigUuid().isEmpty()) {
+                    opticalconfigUuid_ = other.opticalconfigUuid_;
+                    onChanged();
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.OpticalConfigId parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.OpticalConfigId) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private java.lang.Object opticalconfigUuid_ = "";
+
+            /**
+             * <code>string opticalconfig_uuid = 1;</code>
+             * @return The opticalconfigUuid.
+             */
+            public java.lang.String getOpticalconfigUuid() {
+                java.lang.Object ref = opticalconfigUuid_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    opticalconfigUuid_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string opticalconfig_uuid = 1;</code>
+             * @return The bytes for opticalconfigUuid.
+             */
+            public com.google.protobuf.ByteString getOpticalconfigUuidBytes() {
+                java.lang.Object ref = opticalconfigUuid_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    opticalconfigUuid_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string opticalconfig_uuid = 1;</code>
+             * @param value The opticalconfigUuid to set.
+             * @return This builder for chaining.
+             */
+            public Builder setOpticalconfigUuid(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                opticalconfigUuid_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string opticalconfig_uuid = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearOpticalconfigUuid() {
+                opticalconfigUuid_ = getDefaultInstance().getOpticalconfigUuid();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string opticalconfig_uuid = 1;</code>
+             * @param value The bytes for opticalconfigUuid to set.
+             * @return This builder for chaining.
+             */
+            public Builder setOpticalconfigUuidBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                opticalconfigUuid_ = value;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.OpticalConfigId)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.OpticalConfigId)
+        private static final context.ContextOuterClass.OpticalConfigId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigId();
+        }
+
+        public static context.ContextOuterClass.OpticalConfigId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<OpticalConfigId> PARSER = new com.google.protobuf.AbstractParser<OpticalConfigId>() {
+
+            @java.lang.Override
+            public OpticalConfigId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new OpticalConfigId(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<OpticalConfigId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<OpticalConfigId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface OpticalConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfig)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+         * @return Whether the opticalconfigId field is set.
+         */
+        boolean hasOpticalconfigId();
+
+        /**
+         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+         * @return The opticalconfigId.
+         */
+        context.ContextOuterClass.OpticalConfigId getOpticalconfigId();
+
+        /**
+         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+         */
+        context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder();
+
+        /**
+         * <code>string config = 2;</code>
+         * @return The config.
+         */
+        java.lang.String getConfig();
+
+        /**
+         * <code>string config = 2;</code>
+         * @return The bytes for config.
+         */
+        com.google.protobuf.ByteString getConfigBytes();
+    }
+
+    /**
+     * Protobuf type {@code context.OpticalConfig}
+     */
+    public static final class OpticalConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfig)
+    OpticalConfigOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use OpticalConfig.newBuilder() to construct.
+        private OpticalConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private OpticalConfig() {
+            config_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new OpticalConfig();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private OpticalConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.OpticalConfigId.Builder subBuilder = null;
+                                if (opticalconfigId_ != null) {
+                                    subBuilder = opticalconfigId_.toBuilder();
+                                }
+                                opticalconfigId_ = input.readMessage(context.ContextOuterClass.OpticalConfigId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(opticalconfigId_);
+                                    opticalconfigId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                config_ = s;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class);
+        }
+
+        public static final int OPTICALCONFIG_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.OpticalConfigId opticalconfigId_;
+
+        /**
+         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+         * @return Whether the opticalconfigId field is set.
+         */
+        @java.lang.Override
+        public boolean hasOpticalconfigId() {
+            return opticalconfigId_ != null;
+        }
+
+        /**
+         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+         * @return The opticalconfigId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() {
+            return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
+        }
+
+        /**
+         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() {
+            return getOpticalconfigId();
+        }
+
+        public static final int CONFIG_FIELD_NUMBER = 2;
+
+        private volatile java.lang.Object config_;
+
+        /**
+         * <code>string config = 2;</code>
+         * @return The config.
+         */
+        @java.lang.Override
+        public java.lang.String getConfig() {
+            java.lang.Object ref = config_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                config_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string config = 2;</code>
+         * @return The bytes for config.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getConfigBytes() {
+            java.lang.Object ref = config_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                config_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (opticalconfigId_ != null) {
+                output.writeMessage(1, getOpticalconfigId());
+            }
+            if (!getConfigBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, config_);
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (opticalconfigId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOpticalconfigId());
+            }
+            if (!getConfigBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, config_);
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.OpticalConfig)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.OpticalConfig other = (context.ContextOuterClass.OpticalConfig) obj;
+            if (hasOpticalconfigId() != other.hasOpticalconfigId())
+                return false;
+            if (hasOpticalconfigId()) {
+                if (!getOpticalconfigId().equals(other.getOpticalconfigId()))
+                    return false;
+            }
+            if (!getConfig().equals(other.getConfig()))
+                return false;
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasOpticalconfigId()) {
+                hash = (37 * hash) + OPTICALCONFIG_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getOpticalconfigId().hashCode();
+            }
+            hash = (37 * hash) + CONFIG_FIELD_NUMBER;
+            hash = (53 * hash) + getConfig().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.OpticalConfig prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.OpticalConfig}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalConfig)
+        context.ContextOuterClass.OpticalConfigOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.OpticalConfig.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                if (opticalconfigIdBuilder_ == null) {
+                    opticalconfigId_ = null;
+                } else {
+                    opticalconfigId_ = null;
+                    opticalconfigIdBuilder_ = null;
+                }
+                config_ = "";
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() {
+                return context.ContextOuterClass.OpticalConfig.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfig build() {
+                context.ContextOuterClass.OpticalConfig result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfig buildPartial() {
+                context.ContextOuterClass.OpticalConfig result = new context.ContextOuterClass.OpticalConfig(this);
+                if (opticalconfigIdBuilder_ == null) {
+                    result.opticalconfigId_ = opticalconfigId_;
+                } else {
+                    result.opticalconfigId_ = opticalconfigIdBuilder_.build();
+                }
+                result.config_ = config_;
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.OpticalConfig) {
+                    return mergeFrom((context.ContextOuterClass.OpticalConfig) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.OpticalConfig other) {
+                if (other == context.ContextOuterClass.OpticalConfig.getDefaultInstance())
+                    return this;
+                if (other.hasOpticalconfigId()) {
+                    mergeOpticalconfigId(other.getOpticalconfigId());
+                }
+                if (!other.getConfig().isEmpty()) {
+                    config_ = other.config_;
+                    onChanged();
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.OpticalConfig parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.OpticalConfig) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private context.ContextOuterClass.OpticalConfigId opticalconfigId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfigId.Builder, context.ContextOuterClass.OpticalConfigIdOrBuilder> opticalconfigIdBuilder_;
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             * @return Whether the opticalconfigId field is set.
+             */
+            public boolean hasOpticalconfigId() {
+                return opticalconfigIdBuilder_ != null || opticalconfigId_ != null;
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             * @return The opticalconfigId.
+             */
+            public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() {
+                if (opticalconfigIdBuilder_ == null) {
+                    return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
+                } else {
+                    return opticalconfigIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) {
+                if (opticalconfigIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    opticalconfigId_ = value;
+                    onChanged();
+                } else {
+                    opticalconfigIdBuilder_.setMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId.Builder builderForValue) {
+                if (opticalconfigIdBuilder_ == null) {
+                    opticalconfigId_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    opticalconfigIdBuilder_.setMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            public Builder mergeOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) {
+                if (opticalconfigIdBuilder_ == null) {
+                    if (opticalconfigId_ != null) {
+                        opticalconfigId_ = context.ContextOuterClass.OpticalConfigId.newBuilder(opticalconfigId_).mergeFrom(value).buildPartial();
+                    } else {
+                        opticalconfigId_ = value;
+                    }
+                    onChanged();
+                } else {
+                    opticalconfigIdBuilder_.mergeFrom(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            public Builder clearOpticalconfigId() {
+                if (opticalconfigIdBuilder_ == null) {
+                    opticalconfigId_ = null;
+                    onChanged();
+                } else {
+                    opticalconfigId_ = null;
+                    opticalconfigIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfigId.Builder getOpticalconfigIdBuilder() {
+                onChanged();
+                return getOpticalconfigIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() {
+                if (opticalconfigIdBuilder_ != null) {
+                    return opticalconfigIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
+                }
+            }
+
+            /**
+             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfigId.Builder, context.ContextOuterClass.OpticalConfigIdOrBuilder> getOpticalconfigIdFieldBuilder() {
+                if (opticalconfigIdBuilder_ == null) {
+                    opticalconfigIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfigId.Builder, context.ContextOuterClass.OpticalConfigIdOrBuilder>(getOpticalconfigId(), getParentForChildren(), isClean());
+                    opticalconfigId_ = null;
+                }
+                return opticalconfigIdBuilder_;
+            }
+
+            private java.lang.Object config_ = "";
+
+            /**
+             * <code>string config = 2;</code>
+             * @return The config.
+             */
+            public java.lang.String getConfig() {
+                java.lang.Object ref = config_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    config_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string config = 2;</code>
+             * @return The bytes for config.
+             */
+            public com.google.protobuf.ByteString getConfigBytes() {
+                java.lang.Object ref = config_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    config_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string config = 2;</code>
+             * @param value The config to set.
+             * @return This builder for chaining.
+             */
+            public Builder setConfig(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                config_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string config = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearConfig() {
+                config_ = getDefaultInstance().getConfig();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string config = 2;</code>
+             * @param value The bytes for config to set.
+             * @return This builder for chaining.
+             */
+            public Builder setConfigBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                config_ = value;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.OpticalConfig)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.OpticalConfig)
+        private static final context.ContextOuterClass.OpticalConfig DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfig();
+        }
+
+        public static context.ContextOuterClass.OpticalConfig getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<OpticalConfig> PARSER = new com.google.protobuf.AbstractParser<OpticalConfig>() {
+
+            @java.lang.Override
+            public OpticalConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new OpticalConfig(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<OpticalConfig> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<OpticalConfig> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface OpticalConfigListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.OpticalConfig> getOpticalconfigsList();
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index);
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        int getOpticalconfigsCount();
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.OpticalConfigOrBuilder> getOpticalconfigsOrBuilderList();
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.OpticalConfigList}
+     */
+    public static final class OpticalConfigList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigList)
+    OpticalConfigListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use OpticalConfigList.newBuilder() to construct.
+        private OpticalConfigList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private OpticalConfigList() {
+            opticalconfigs_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new OpticalConfigList();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private OpticalConfigList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    opticalconfigs_ = new java.util.ArrayList<context.ContextOuterClass.OpticalConfig>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                opticalconfigs_.add(input.readMessage(context.ContextOuterClass.OpticalConfig.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    opticalconfigs_ = java.util.Collections.unmodifiableList(opticalconfigs_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class);
+        }
+
+        public static final int OPTICALCONFIGS_FIELD_NUMBER = 1;
+
+        private java.util.List<context.ContextOuterClass.OpticalConfig> opticalconfigs_;
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.OpticalConfig> getOpticalconfigsList() {
+            return opticalconfigs_;
+        }
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.OpticalConfigOrBuilder> getOpticalconfigsOrBuilderList() {
+            return opticalconfigs_;
+        }
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        @java.lang.Override
+        public int getOpticalconfigsCount() {
+            return opticalconfigs_.size();
+        }
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) {
+            return opticalconfigs_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) {
+            return opticalconfigs_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < opticalconfigs_.size(); i++) {
+                output.writeMessage(1, opticalconfigs_.get(i));
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < opticalconfigs_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, opticalconfigs_.get(i));
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.OpticalConfigList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.OpticalConfigList other = (context.ContextOuterClass.OpticalConfigList) obj;
+            if (!getOpticalconfigsList().equals(other.getOpticalconfigsList()))
+                return false;
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (getOpticalconfigsCount() > 0) {
+                hash = (37 * hash) + OPTICALCONFIGS_FIELD_NUMBER;
+                hash = (53 * hash) + getOpticalconfigsList().hashCode();
+            }
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.OpticalConfigList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.OpticalConfigList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigList)
+        context.ContextOuterClass.OpticalConfigListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.OpticalConfigList.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getOpticalconfigsFieldBuilder();
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                if (opticalconfigsBuilder_ == null) {
+                    opticalconfigs_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                    opticalconfigsBuilder_.clear();
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() {
+                return context.ContextOuterClass.OpticalConfigList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfigList build() {
+                context.ContextOuterClass.OpticalConfigList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalConfigList buildPartial() {
+                context.ContextOuterClass.OpticalConfigList result = new context.ContextOuterClass.OpticalConfigList(this);
+                int from_bitField0_ = bitField0_;
+                if (opticalconfigsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        opticalconfigs_ = java.util.Collections.unmodifiableList(opticalconfigs_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.opticalconfigs_ = opticalconfigs_;
+                } else {
+                    result.opticalconfigs_ = opticalconfigsBuilder_.build();
+                }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.OpticalConfigList) {
+                    return mergeFrom((context.ContextOuterClass.OpticalConfigList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.OpticalConfigList other) {
+                if (other == context.ContextOuterClass.OpticalConfigList.getDefaultInstance())
+                    return this;
+                if (opticalconfigsBuilder_ == null) {
+                    if (!other.opticalconfigs_.isEmpty()) {
+                        if (opticalconfigs_.isEmpty()) {
+                            opticalconfigs_ = other.opticalconfigs_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureOpticalconfigsIsMutable();
+                            opticalconfigs_.addAll(other.opticalconfigs_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.opticalconfigs_.isEmpty()) {
+                        if (opticalconfigsBuilder_.isEmpty()) {
+                            opticalconfigsBuilder_.dispose();
+                            opticalconfigsBuilder_ = null;
+                            opticalconfigs_ = other.opticalconfigs_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            opticalconfigsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalconfigsFieldBuilder() : null;
+                        } else {
+                            opticalconfigsBuilder_.addAllMessages(other.opticalconfigs_);
+                        }
+                    }
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.OpticalConfigList parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.OpticalConfigList) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.OpticalConfig> opticalconfigs_ = java.util.Collections.emptyList();
+
+            private void ensureOpticalconfigsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    opticalconfigs_ = new java.util.ArrayList<context.ContextOuterClass.OpticalConfig>(opticalconfigs_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfig.Builder, context.ContextOuterClass.OpticalConfigOrBuilder> opticalconfigsBuilder_;
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.OpticalConfig> getOpticalconfigsList() {
+                if (opticalconfigsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(opticalconfigs_);
+                } else {
+                    return opticalconfigsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public int getOpticalconfigsCount() {
+                if (opticalconfigsBuilder_ == null) {
+                    return opticalconfigs_.size();
+                } else {
+                    return opticalconfigsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) {
+                if (opticalconfigsBuilder_ == null) {
+                    return opticalconfigs_.get(index);
+                } else {
+                    return opticalconfigsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) {
+                if (opticalconfigsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.set(index, value);
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) {
+                if (opticalconfigsBuilder_ == null) {
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig value) {
+                if (opticalconfigsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.add(value);
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) {
+                if (opticalconfigsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.add(index, value);
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig.Builder builderForValue) {
+                if (opticalconfigsBuilder_ == null) {
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) {
+                if (opticalconfigsBuilder_ == null) {
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder addAllOpticalconfigs(java.lang.Iterable<? extends context.ContextOuterClass.OpticalConfig> values) {
+                if (opticalconfigsBuilder_ == null) {
+                    ensureOpticalconfigsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalconfigs_);
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder clearOpticalconfigs() {
+                if (opticalconfigsBuilder_ == null) {
+                    opticalconfigs_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public Builder removeOpticalconfigs(int index) {
+                if (opticalconfigsBuilder_ == null) {
+                    ensureOpticalconfigsIsMutable();
+                    opticalconfigs_.remove(index);
+                    onChanged();
+                } else {
+                    opticalconfigsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfig.Builder getOpticalconfigsBuilder(int index) {
+                return getOpticalconfigsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) {
+                if (opticalconfigsBuilder_ == null) {
+                    return opticalconfigs_.get(index);
+                } else {
+                    return opticalconfigsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.OpticalConfigOrBuilder> getOpticalconfigsOrBuilderList() {
+                if (opticalconfigsBuilder_ != null) {
+                    return opticalconfigsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(opticalconfigs_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder() {
+                return getOpticalconfigsFieldBuilder().addBuilder(context.ContextOuterClass.OpticalConfig.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder(int index) {
+                return getOpticalconfigsFieldBuilder().addBuilder(index, context.ContextOuterClass.OpticalConfig.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.OpticalConfig.Builder> getOpticalconfigsBuilderList() {
+                return getOpticalconfigsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfig.Builder, context.ContextOuterClass.OpticalConfigOrBuilder> getOpticalconfigsFieldBuilder() {
+                if (opticalconfigsBuilder_ == null) {
+                    opticalconfigsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfig.Builder, context.ContextOuterClass.OpticalConfigOrBuilder>(opticalconfigs_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    opticalconfigs_ = null;
+                }
+                return opticalconfigsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.OpticalConfigList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.OpticalConfigList)
+        private static final context.ContextOuterClass.OpticalConfigList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigList();
+        }
+
+        public static context.ContextOuterClass.OpticalConfigList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<OpticalConfigList> PARSER = new com.google.protobuf.AbstractParser<OpticalConfigList>() {
+
+            @java.lang.Override
+            public OpticalConfigList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new OpticalConfigList(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<OpticalConfigList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<OpticalConfigList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface OpticalLinkIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Uuid optical_link_uuid = 1;</code>
+         * @return Whether the opticalLinkUuid field is set.
+         */
+        boolean hasOpticalLinkUuid();
+
+        /**
+         * <code>.context.Uuid optical_link_uuid = 1;</code>
+         * @return The opticalLinkUuid.
+         */
+        context.ContextOuterClass.Uuid getOpticalLinkUuid();
+
+        /**
+         * <code>.context.Uuid optical_link_uuid = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getOpticalLinkUuidOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.OpticalLinkId}
+     */
+    public static final class OpticalLinkId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkId)
+    OpticalLinkIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use OpticalLinkId.newBuilder() to construct.
+        private OpticalLinkId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private OpticalLinkId() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new OpticalLinkId();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private OpticalLinkId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (opticalLinkUuid_ != null) {
+                                    subBuilder = opticalLinkUuid_.toBuilder();
+                                }
+                                opticalLinkUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(opticalLinkUuid_);
+                                    opticalLinkUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_OpticalLinkId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_OpticalLinkId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkId.class, context.ContextOuterClass.OpticalLinkId.Builder.class);
+        }
+
+        public static final int OPTICAL_LINK_UUID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Uuid opticalLinkUuid_;
+
+        /**
+         * <code>.context.Uuid optical_link_uuid = 1;</code>
+         * @return Whether the opticalLinkUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasOpticalLinkUuid() {
+            return opticalLinkUuid_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid optical_link_uuid = 1;</code>
+         * @return The opticalLinkUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getOpticalLinkUuid() {
+            return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_;
+        }
+
+        /**
+         * <code>.context.Uuid optical_link_uuid = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getOpticalLinkUuidOrBuilder() {
+            return getOpticalLinkUuid();
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (opticalLinkUuid_ != null) {
+                output.writeMessage(1, getOpticalLinkUuid());
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (opticalLinkUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOpticalLinkUuid());
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.OpticalLinkId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.OpticalLinkId other = (context.ContextOuterClass.OpticalLinkId) obj;
+            if (hasOpticalLinkUuid() != other.hasOpticalLinkUuid())
+                return false;
+            if (hasOpticalLinkUuid()) {
+                if (!getOpticalLinkUuid().equals(other.getOpticalLinkUuid()))
+                    return false;
+            }
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasOpticalLinkUuid()) {
+                hash = (37 * hash) + OPTICAL_LINK_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getOpticalLinkUuid().hashCode();
+            }
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.OpticalLinkId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.OpticalLinkId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkId)
+        context.ContextOuterClass.OpticalLinkIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_OpticalLinkId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_OpticalLinkId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkId.class, context.ContextOuterClass.OpticalLinkId.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.OpticalLinkId.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuid_ = null;
+                } else {
+                    opticalLinkUuid_ = null;
+                    opticalLinkUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_OpticalLinkId_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalLinkId getDefaultInstanceForType() {
+                return context.ContextOuterClass.OpticalLinkId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalLinkId build() {
+                context.ContextOuterClass.OpticalLinkId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalLinkId buildPartial() {
+                context.ContextOuterClass.OpticalLinkId result = new context.ContextOuterClass.OpticalLinkId(this);
+                if (opticalLinkUuidBuilder_ == null) {
+                    result.opticalLinkUuid_ = opticalLinkUuid_;
+                } else {
+                    result.opticalLinkUuid_ = opticalLinkUuidBuilder_.build();
+                }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.OpticalLinkId) {
+                    return mergeFrom((context.ContextOuterClass.OpticalLinkId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.OpticalLinkId other) {
+                if (other == context.ContextOuterClass.OpticalLinkId.getDefaultInstance())
+                    return this;
+                if (other.hasOpticalLinkUuid()) {
+                    mergeOpticalLinkUuid(other.getOpticalLinkUuid());
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.OpticalLinkId parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.OpticalLinkId) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private context.ContextOuterClass.Uuid opticalLinkUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> opticalLinkUuidBuilder_;
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             * @return Whether the opticalLinkUuid field is set.
+             */
+            public boolean hasOpticalLinkUuid() {
+                return opticalLinkUuidBuilder_ != null || opticalLinkUuid_ != null;
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             * @return The opticalLinkUuid.
+             */
+            public context.ContextOuterClass.Uuid getOpticalLinkUuid() {
+                if (opticalLinkUuidBuilder_ == null) {
+                    return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_;
+                } else {
+                    return opticalLinkUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            public Builder setOpticalLinkUuid(context.ContextOuterClass.Uuid value) {
+                if (opticalLinkUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    opticalLinkUuid_ = value;
+                    onChanged();
+                } else {
+                    opticalLinkUuidBuilder_.setMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            public Builder setOpticalLinkUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuid_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    opticalLinkUuidBuilder_.setMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            public Builder mergeOpticalLinkUuid(context.ContextOuterClass.Uuid value) {
+                if (opticalLinkUuidBuilder_ == null) {
+                    if (opticalLinkUuid_ != null) {
+                        opticalLinkUuid_ = context.ContextOuterClass.Uuid.newBuilder(opticalLinkUuid_).mergeFrom(value).buildPartial();
+                    } else {
+                        opticalLinkUuid_ = value;
+                    }
+                    onChanged();
+                } else {
+                    opticalLinkUuidBuilder_.mergeFrom(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            public Builder clearOpticalLinkUuid() {
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuid_ = null;
+                    onChanged();
+                } else {
+                    opticalLinkUuid_ = null;
+                    opticalLinkUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getOpticalLinkUuidBuilder() {
+                onChanged();
+                return getOpticalLinkUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getOpticalLinkUuidOrBuilder() {
+                if (opticalLinkUuidBuilder_ != null) {
+                    return opticalLinkUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return opticalLinkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : opticalLinkUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid optical_link_uuid = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getOpticalLinkUuidFieldBuilder() {
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getOpticalLinkUuid(), getParentForChildren(), isClean());
+                    opticalLinkUuid_ = null;
+                }
+                return opticalLinkUuidBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.OpticalLinkId)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.OpticalLinkId)
+        private static final context.ContextOuterClass.OpticalLinkId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkId();
+        }
+
+        public static context.ContextOuterClass.OpticalLinkId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<OpticalLinkId> PARSER = new com.google.protobuf.AbstractParser<OpticalLinkId>() {
+
+            @java.lang.Override
+            public OpticalLinkId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new OpticalLinkId(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<OpticalLinkId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<OpticalLinkId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalLinkId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface FiberIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.FiberId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Uuid fiber_uuid = 1;</code>
+         * @return Whether the fiberUuid field is set.
+         */
+        boolean hasFiberUuid();
+
+        /**
+         * <code>.context.Uuid fiber_uuid = 1;</code>
+         * @return The fiberUuid.
+         */
+        context.ContextOuterClass.Uuid getFiberUuid();
+
+        /**
+         * <code>.context.Uuid fiber_uuid = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getFiberUuidOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.FiberId}
+     */
+    public static final class FiberId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.FiberId)
+    FiberIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use FiberId.newBuilder() to construct.
+        private FiberId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private FiberId() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new FiberId();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private FiberId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (fiberUuid_ != null) {
+                                    subBuilder = fiberUuid_.toBuilder();
+                                }
+                                fiberUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(fiberUuid_);
+                                    fiberUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_FiberId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_FiberId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.FiberId.class, context.ContextOuterClass.FiberId.Builder.class);
+        }
+
+        public static final int FIBER_UUID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Uuid fiberUuid_;
+
+        /**
+         * <code>.context.Uuid fiber_uuid = 1;</code>
+         * @return Whether the fiberUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasFiberUuid() {
+            return fiberUuid_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid fiber_uuid = 1;</code>
+         * @return The fiberUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getFiberUuid() {
+            return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_;
+        }
+
+        /**
+         * <code>.context.Uuid fiber_uuid = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getFiberUuidOrBuilder() {
+            return getFiberUuid();
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (fiberUuid_ != null) {
+                output.writeMessage(1, getFiberUuid());
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (fiberUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getFiberUuid());
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.FiberId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.FiberId other = (context.ContextOuterClass.FiberId) obj;
+            if (hasFiberUuid() != other.hasFiberUuid())
+                return false;
+            if (hasFiberUuid()) {
+                if (!getFiberUuid().equals(other.getFiberUuid()))
+                    return false;
+            }
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasFiberUuid()) {
+                hash = (37 * hash) + FIBER_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getFiberUuid().hashCode();
+            }
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.FiberId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.FiberId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.FiberId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.FiberId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.FiberId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.FiberId)
+        context.ContextOuterClass.FiberIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_FiberId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_FiberId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.FiberId.class, context.ContextOuterClass.FiberId.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.FiberId.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuid_ = null;
+                } else {
+                    fiberUuid_ = null;
+                    fiberUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_FiberId_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.FiberId getDefaultInstanceForType() {
+                return context.ContextOuterClass.FiberId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.FiberId build() {
+                context.ContextOuterClass.FiberId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.FiberId buildPartial() {
+                context.ContextOuterClass.FiberId result = new context.ContextOuterClass.FiberId(this);
+                if (fiberUuidBuilder_ == null) {
+                    result.fiberUuid_ = fiberUuid_;
+                } else {
+                    result.fiberUuid_ = fiberUuidBuilder_.build();
+                }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.FiberId) {
+                    return mergeFrom((context.ContextOuterClass.FiberId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.FiberId other) {
+                if (other == context.ContextOuterClass.FiberId.getDefaultInstance())
+                    return this;
+                if (other.hasFiberUuid()) {
+                    mergeFiberUuid(other.getFiberUuid());
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.FiberId parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.FiberId) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private context.ContextOuterClass.Uuid fiberUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> fiberUuidBuilder_;
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             * @return Whether the fiberUuid field is set.
+             */
+            public boolean hasFiberUuid() {
+                return fiberUuidBuilder_ != null || fiberUuid_ != null;
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             * @return The fiberUuid.
+             */
+            public context.ContextOuterClass.Uuid getFiberUuid() {
+                if (fiberUuidBuilder_ == null) {
+                    return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_;
+                } else {
+                    return fiberUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            public Builder setFiberUuid(context.ContextOuterClass.Uuid value) {
+                if (fiberUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    fiberUuid_ = value;
+                    onChanged();
+                } else {
+                    fiberUuidBuilder_.setMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            public Builder setFiberUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuid_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    fiberUuidBuilder_.setMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            public Builder mergeFiberUuid(context.ContextOuterClass.Uuid value) {
+                if (fiberUuidBuilder_ == null) {
+                    if (fiberUuid_ != null) {
+                        fiberUuid_ = context.ContextOuterClass.Uuid.newBuilder(fiberUuid_).mergeFrom(value).buildPartial();
+                    } else {
+                        fiberUuid_ = value;
+                    }
+                    onChanged();
+                } else {
+                    fiberUuidBuilder_.mergeFrom(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            public Builder clearFiberUuid() {
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuid_ = null;
+                    onChanged();
+                } else {
+                    fiberUuid_ = null;
+                    fiberUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getFiberUuidBuilder() {
+                onChanged();
+                return getFiberUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getFiberUuidOrBuilder() {
+                if (fiberUuidBuilder_ != null) {
+                    return fiberUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return fiberUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : fiberUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid fiber_uuid = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getFiberUuidFieldBuilder() {
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getFiberUuid(), getParentForChildren(), isClean());
+                    fiberUuid_ = null;
+                }
+                return fiberUuidBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.FiberId)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.FiberId)
+        private static final context.ContextOuterClass.FiberId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.FiberId();
+        }
+
+        public static context.ContextOuterClass.FiberId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<FiberId> PARSER = new com.google.protobuf.AbstractParser<FiberId>() {
+
+            @java.lang.Override
+            public FiberId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new FiberId(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<FiberId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<FiberId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.FiberId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface FiberOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Fiber)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>string ID = 10;</code>
+         * @return The iD.
+         */
+        java.lang.String getID();
+
+        /**
+         * <code>string ID = 10;</code>
+         * @return The bytes for iD.
+         */
+        com.google.protobuf.ByteString getIDBytes();
+
+        /**
+         * <code>string src_port = 1;</code>
+         * @return The srcPort.
+         */
+        java.lang.String getSrcPort();
+
+        /**
+         * <code>string src_port = 1;</code>
+         * @return The bytes for srcPort.
+         */
+        com.google.protobuf.ByteString getSrcPortBytes();
+
+        /**
+         * <code>string dst_port = 2;</code>
+         * @return The dstPort.
+         */
+        java.lang.String getDstPort();
+
+        /**
+         * <code>string dst_port = 2;</code>
+         * @return The bytes for dstPort.
+         */
+        com.google.protobuf.ByteString getDstPortBytes();
+
+        /**
+         * <code>string local_peer_port = 3;</code>
+         * @return The localPeerPort.
+         */
+        java.lang.String getLocalPeerPort();
+
+        /**
+         * <code>string local_peer_port = 3;</code>
+         * @return The bytes for localPeerPort.
+         */
+        com.google.protobuf.ByteString getLocalPeerPortBytes();
+
+        /**
+         * <code>string remote_peer_port = 4;</code>
+         * @return The remotePeerPort.
+         */
+        java.lang.String getRemotePeerPort();
+
+        /**
+         * <code>string remote_peer_port = 4;</code>
+         * @return The bytes for remotePeerPort.
+         */
+        com.google.protobuf.ByteString getRemotePeerPortBytes();
+
+        /**
+         * <code>repeated int32 c_slots = 5;</code>
+         * @return A list containing the cSlots.
+         */
+        java.util.List<java.lang.Integer> getCSlotsList();
+
+        /**
+         * <code>repeated int32 c_slots = 5;</code>
+         * @return The count of cSlots.
+         */
+        int getCSlotsCount();
+
+        /**
+         * <code>repeated int32 c_slots = 5;</code>
+         * @param index The index of the element to return.
+         * @return The cSlots at the given index.
+         */
+        int getCSlots(int index);
+
+        /**
+         * <code>repeated int32 l_slots = 6;</code>
+         * @return A list containing the lSlots.
+         */
+        java.util.List<java.lang.Integer> getLSlotsList();
+
+        /**
+         * <code>repeated int32 l_slots = 6;</code>
+         * @return The count of lSlots.
+         */
+        int getLSlotsCount();
+
+        /**
+         * <code>repeated int32 l_slots = 6;</code>
+         * @param index The index of the element to return.
+         * @return The lSlots at the given index.
+         */
+        int getLSlots(int index);
+
+        /**
+         * <code>repeated int32 s_slots = 7;</code>
+         * @return A list containing the sSlots.
+         */
+        java.util.List<java.lang.Integer> getSSlotsList();
+
+        /**
+         * <code>repeated int32 s_slots = 7;</code>
+         * @return The count of sSlots.
+         */
+        int getSSlotsCount();
+
+        /**
+         * <code>repeated int32 s_slots = 7;</code>
+         * @param index The index of the element to return.
+         * @return The sSlots at the given index.
+         */
+        int getSSlots(int index);
+
+        /**
+         * <code>float length = 8;</code>
+         * @return The length.
+         */
+        float getLength();
+
+        /**
+         * <code>bool used = 9;</code>
+         * @return The used.
+         */
+        boolean getUsed();
+
+        /**
+         * <code>.context.FiberId fiber_uuid = 11;</code>
+         * @return Whether the fiberUuid field is set.
+         */
+        boolean hasFiberUuid();
+
+        /**
+         * <code>.context.FiberId fiber_uuid = 11;</code>
+         * @return The fiberUuid.
+         */
+        context.ContextOuterClass.FiberId getFiberUuid();
+
+        /**
+         * <code>.context.FiberId fiber_uuid = 11;</code>
+         */
+        context.ContextOuterClass.FiberIdOrBuilder getFiberUuidOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.Fiber}
+     */
+    public static final class Fiber extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Fiber)
+    FiberOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use Fiber.newBuilder() to construct.
+        private Fiber(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private Fiber() {
+            iD_ = "";
+            srcPort_ = "";
+            dstPort_ = "";
+            localPeerPort_ = "";
+            remotePeerPort_ = "";
+            cSlots_ = emptyIntList();
+            lSlots_ = emptyIntList();
+            sSlots_ = emptyIntList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Fiber();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Fiber(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                srcPort_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                dstPort_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                localPeerPort_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                remotePeerPort_ = s;
+                                break;
+                            }
+                        case 40:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    cSlots_ = newIntList();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                cSlots_.addInt(input.readInt32());
+                                break;
+                            }
+                        case 42:
+                            {
+                                int length = input.readRawVarint32();
+                                int limit = input.pushLimit(length);
+                                if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
+                                    cSlots_ = newIntList();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                while (input.getBytesUntilLimit() > 0) {
+                                    cSlots_.addInt(input.readInt32());
+                                }
+                                input.popLimit(limit);
+                                break;
+                            }
+                        case 48:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+                                    lSlots_ = newIntList();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                lSlots_.addInt(input.readInt32());
+                                break;
+                            }
+                        case 50:
+                            {
+                                int length = input.readRawVarint32();
+                                int limit = input.pushLimit(length);
+                                if (!((mutable_bitField0_ & 0x00000002) != 0) && input.getBytesUntilLimit() > 0) {
+                                    lSlots_ = newIntList();
+                                    mutable_bitField0_ |= 0x00000002;
+                                }
+                                while (input.getBytesUntilLimit() > 0) {
+                                    lSlots_.addInt(input.readInt32());
+                                }
+                                input.popLimit(limit);
+                                break;
+                            }
+                        case 56:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
+                                    sSlots_ = newIntList();
+                                    mutable_bitField0_ |= 0x00000004;
+                                }
+                                sSlots_.addInt(input.readInt32());
+                                break;
+                            }
+                        case 58:
+                            {
+                                int length = input.readRawVarint32();
+                                int limit = input.pushLimit(length);
+                                if (!((mutable_bitField0_ & 0x00000004) != 0) && input.getBytesUntilLimit() > 0) {
+                                    sSlots_ = newIntList();
+                                    mutable_bitField0_ |= 0x00000004;
+                                }
+                                while (input.getBytesUntilLimit() > 0) {
+                                    sSlots_.addInt(input.readInt32());
+                                }
+                                input.popLimit(limit);
+                                break;
+                            }
+                        case 69:
+                            {
+                                length_ = input.readFloat();
+                                break;
+                            }
+                        case 72:
+                            {
+                                used_ = input.readBool();
+                                break;
+                            }
+                        case 82:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                iD_ = s;
+                                break;
+                            }
+                        case 90:
+                            {
+                                context.ContextOuterClass.FiberId.Builder subBuilder = null;
+                                if (fiberUuid_ != null) {
+                                    subBuilder = fiberUuid_.toBuilder();
+                                }
+                                fiberUuid_ = input.readMessage(context.ContextOuterClass.FiberId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(fiberUuid_);
+                                    fiberUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    // C
+                    cSlots_.makeImmutable();
+                }
+                if (((mutable_bitField0_ & 0x00000002) != 0)) {
+                    // C
+                    lSlots_.makeImmutable();
+                }
+                if (((mutable_bitField0_ & 0x00000004) != 0)) {
+                    // C
+                    sSlots_.makeImmutable();
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Fiber_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Fiber_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Fiber.class, context.ContextOuterClass.Fiber.Builder.class);
+        }
+
+        public static final int ID_FIELD_NUMBER = 10;
+
+        private volatile java.lang.Object iD_;
+
+        /**
+         * <code>string ID = 10;</code>
+         * @return The iD.
+         */
+        @java.lang.Override
+        public java.lang.String getID() {
+            java.lang.Object ref = iD_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                iD_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string ID = 10;</code>
+         * @return The bytes for iD.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getIDBytes() {
+            java.lang.Object ref = iD_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                iD_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int SRC_PORT_FIELD_NUMBER = 1;
+
+        private volatile java.lang.Object srcPort_;
+
+        /**
+         * <code>string src_port = 1;</code>
+         * @return The srcPort.
+         */
+        @java.lang.Override
+        public java.lang.String getSrcPort() {
+            java.lang.Object ref = srcPort_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                srcPort_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string src_port = 1;</code>
+         * @return The bytes for srcPort.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getSrcPortBytes() {
+            java.lang.Object ref = srcPort_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                srcPort_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int DST_PORT_FIELD_NUMBER = 2;
+
+        private volatile java.lang.Object dstPort_;
+
+        /**
+         * <code>string dst_port = 2;</code>
+         * @return The dstPort.
+         */
+        @java.lang.Override
+        public java.lang.String getDstPort() {
+            java.lang.Object ref = dstPort_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                dstPort_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string dst_port = 2;</code>
+         * @return The bytes for dstPort.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getDstPortBytes() {
+            java.lang.Object ref = dstPort_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                dstPort_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int LOCAL_PEER_PORT_FIELD_NUMBER = 3;
+
+        private volatile java.lang.Object localPeerPort_;
+
+        /**
+         * <code>string local_peer_port = 3;</code>
+         * @return The localPeerPort.
+         */
+        @java.lang.Override
+        public java.lang.String getLocalPeerPort() {
+            java.lang.Object ref = localPeerPort_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                localPeerPort_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string local_peer_port = 3;</code>
+         * @return The bytes for localPeerPort.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getLocalPeerPortBytes() {
+            java.lang.Object ref = localPeerPort_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                localPeerPort_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int REMOTE_PEER_PORT_FIELD_NUMBER = 4;
+
+        private volatile java.lang.Object remotePeerPort_;
+
+        /**
+         * <code>string remote_peer_port = 4;</code>
+         * @return The remotePeerPort.
+         */
+        @java.lang.Override
+        public java.lang.String getRemotePeerPort() {
+            java.lang.Object ref = remotePeerPort_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                remotePeerPort_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string remote_peer_port = 4;</code>
+         * @return The bytes for remotePeerPort.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getRemotePeerPortBytes() {
+            java.lang.Object ref = remotePeerPort_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                remotePeerPort_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int C_SLOTS_FIELD_NUMBER = 5;
+
+        private com.google.protobuf.Internal.IntList cSlots_;
+
+        /**
+         * <code>repeated int32 c_slots = 5;</code>
+         * @return A list containing the cSlots.
+         */
+        @java.lang.Override
+        public java.util.List<java.lang.Integer> getCSlotsList() {
+            return cSlots_;
+        }
+
+        /**
+         * <code>repeated int32 c_slots = 5;</code>
+         * @return The count of cSlots.
+         */
+        public int getCSlotsCount() {
+            return cSlots_.size();
+        }
+
+        /**
+         * <code>repeated int32 c_slots = 5;</code>
+         * @param index The index of the element to return.
+         * @return The cSlots at the given index.
+         */
+        public int getCSlots(int index) {
+            return cSlots_.getInt(index);
+        }
+
+        private int cSlotsMemoizedSerializedSize = -1;
+
+        public static final int L_SLOTS_FIELD_NUMBER = 6;
+
+        private com.google.protobuf.Internal.IntList lSlots_;
+
+        /**
+         * <code>repeated int32 l_slots = 6;</code>
+         * @return A list containing the lSlots.
+         */
+        @java.lang.Override
+        public java.util.List<java.lang.Integer> getLSlotsList() {
+            return lSlots_;
+        }
+
+        /**
+         * <code>repeated int32 l_slots = 6;</code>
+         * @return The count of lSlots.
+         */
+        public int getLSlotsCount() {
+            return lSlots_.size();
+        }
+
+        /**
+         * <code>repeated int32 l_slots = 6;</code>
+         * @param index The index of the element to return.
+         * @return The lSlots at the given index.
+         */
+        public int getLSlots(int index) {
+            return lSlots_.getInt(index);
+        }
+
+        private int lSlotsMemoizedSerializedSize = -1;
+
+        public static final int S_SLOTS_FIELD_NUMBER = 7;
+
+        private com.google.protobuf.Internal.IntList sSlots_;
+
+        /**
+         * <code>repeated int32 s_slots = 7;</code>
+         * @return A list containing the sSlots.
+         */
+        @java.lang.Override
+        public java.util.List<java.lang.Integer> getSSlotsList() {
+            return sSlots_;
+        }
+
+        /**
+         * <code>repeated int32 s_slots = 7;</code>
+         * @return The count of sSlots.
+         */
+        public int getSSlotsCount() {
+            return sSlots_.size();
+        }
+
+        /**
+         * <code>repeated int32 s_slots = 7;</code>
+         * @param index The index of the element to return.
+         * @return The sSlots at the given index.
+         */
+        public int getSSlots(int index) {
+            return sSlots_.getInt(index);
+        }
+
+        private int sSlotsMemoizedSerializedSize = -1;
+
+        public static final int LENGTH_FIELD_NUMBER = 8;
+
+        private float length_;
+
+        /**
+         * <code>float length = 8;</code>
+         * @return The length.
+         */
+        @java.lang.Override
+        public float getLength() {
+            return length_;
+        }
+
+        public static final int USED_FIELD_NUMBER = 9;
+
+        private boolean used_;
+
+        /**
+         * <code>bool used = 9;</code>
+         * @return The used.
+         */
+        @java.lang.Override
+        public boolean getUsed() {
+            return used_;
+        }
+
+        public static final int FIBER_UUID_FIELD_NUMBER = 11;
+
+        private context.ContextOuterClass.FiberId fiberUuid_;
+
+        /**
+         * <code>.context.FiberId fiber_uuid = 11;</code>
+         * @return Whether the fiberUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasFiberUuid() {
+            return fiberUuid_ != null;
+        }
+
+        /**
+         * <code>.context.FiberId fiber_uuid = 11;</code>
+         * @return The fiberUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.FiberId getFiberUuid() {
+            return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_;
+        }
+
+        /**
+         * <code>.context.FiberId fiber_uuid = 11;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.FiberIdOrBuilder getFiberUuidOrBuilder() {
+            return getFiberUuid();
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            getSerializedSize();
+            if (!getSrcPortBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcPort_);
+            }
+            if (!getDstPortBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstPort_);
+            }
+            if (!getLocalPeerPortBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, localPeerPort_);
+            }
+            if (!getRemotePeerPortBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, remotePeerPort_);
+            }
+            if (getCSlotsList().size() > 0) {
+                output.writeUInt32NoTag(42);
+                output.writeUInt32NoTag(cSlotsMemoizedSerializedSize);
+            }
+            for (int i = 0; i < cSlots_.size(); i++) {
+                output.writeInt32NoTag(cSlots_.getInt(i));
+            }
+            if (getLSlotsList().size() > 0) {
+                output.writeUInt32NoTag(50);
+                output.writeUInt32NoTag(lSlotsMemoizedSerializedSize);
+            }
+            for (int i = 0; i < lSlots_.size(); i++) {
+                output.writeInt32NoTag(lSlots_.getInt(i));
+            }
+            if (getSSlotsList().size() > 0) {
+                output.writeUInt32NoTag(58);
+                output.writeUInt32NoTag(sSlotsMemoizedSerializedSize);
+            }
+            for (int i = 0; i < sSlots_.size(); i++) {
+                output.writeInt32NoTag(sSlots_.getInt(i));
+            }
+            if (length_ != 0F) {
+                output.writeFloat(8, length_);
+            }
+            if (used_ != false) {
+                output.writeBool(9, used_);
+            }
+            if (!getIDBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 10, iD_);
+            }
+            if (fiberUuid_ != null) {
+                output.writeMessage(11, getFiberUuid());
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (!getSrcPortBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcPort_);
+            }
+            if (!getDstPortBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstPort_);
+            }
+            if (!getLocalPeerPortBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, localPeerPort_);
+            }
+            if (!getRemotePeerPortBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, remotePeerPort_);
+            }
+            {
+                int dataSize = 0;
+                for (int i = 0; i < cSlots_.size(); i++) {
+                    dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(cSlots_.getInt(i));
+                }
+                size += dataSize;
+                if (!getCSlotsList().isEmpty()) {
+                    size += 1;
+                    size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
+                }
+                cSlotsMemoizedSerializedSize = dataSize;
+            }
+            {
+                int dataSize = 0;
+                for (int i = 0; i < lSlots_.size(); i++) {
+                    dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(lSlots_.getInt(i));
+                }
+                size += dataSize;
+                if (!getLSlotsList().isEmpty()) {
+                    size += 1;
+                    size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
+                }
+                lSlotsMemoizedSerializedSize = dataSize;
+            }
+            {
+                int dataSize = 0;
+                for (int i = 0; i < sSlots_.size(); i++) {
+                    dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(sSlots_.getInt(i));
+                }
+                size += dataSize;
+                if (!getSSlotsList().isEmpty()) {
+                    size += 1;
+                    size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
+                }
+                sSlotsMemoizedSerializedSize = dataSize;
+            }
+            if (length_ != 0F) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(8, length_);
+            }
+            if (used_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(9, used_);
+            }
+            if (!getIDBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, iD_);
+            }
+            if (fiberUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, getFiberUuid());
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Fiber)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Fiber other = (context.ContextOuterClass.Fiber) obj;
+            if (!getID().equals(other.getID()))
+                return false;
+            if (!getSrcPort().equals(other.getSrcPort()))
+                return false;
+            if (!getDstPort().equals(other.getDstPort()))
+                return false;
+            if (!getLocalPeerPort().equals(other.getLocalPeerPort()))
+                return false;
+            if (!getRemotePeerPort().equals(other.getRemotePeerPort()))
+                return false;
+            if (!getCSlotsList().equals(other.getCSlotsList()))
+                return false;
+            if (!getLSlotsList().equals(other.getLSlotsList()))
+                return false;
+            if (!getSSlotsList().equals(other.getSSlotsList()))
+                return false;
+            if (java.lang.Float.floatToIntBits(getLength()) != java.lang.Float.floatToIntBits(other.getLength()))
+                return false;
+            if (getUsed() != other.getUsed())
+                return false;
+            if (hasFiberUuid() != other.hasFiberUuid())
+                return false;
+            if (hasFiberUuid()) {
+                if (!getFiberUuid().equals(other.getFiberUuid()))
+                    return false;
+            }
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            hash = (37 * hash) + ID_FIELD_NUMBER;
+            hash = (53 * hash) + getID().hashCode();
+            hash = (37 * hash) + SRC_PORT_FIELD_NUMBER;
+            hash = (53 * hash) + getSrcPort().hashCode();
+            hash = (37 * hash) + DST_PORT_FIELD_NUMBER;
+            hash = (53 * hash) + getDstPort().hashCode();
+            hash = (37 * hash) + LOCAL_PEER_PORT_FIELD_NUMBER;
+            hash = (53 * hash) + getLocalPeerPort().hashCode();
+            hash = (37 * hash) + REMOTE_PEER_PORT_FIELD_NUMBER;
+            hash = (53 * hash) + getRemotePeerPort().hashCode();
+            if (getCSlotsCount() > 0) {
+                hash = (37 * hash) + C_SLOTS_FIELD_NUMBER;
+                hash = (53 * hash) + getCSlotsList().hashCode();
+            }
+            if (getLSlotsCount() > 0) {
+                hash = (37 * hash) + L_SLOTS_FIELD_NUMBER;
+                hash = (53 * hash) + getLSlotsList().hashCode();
+            }
+            if (getSSlotsCount() > 0) {
+                hash = (37 * hash) + S_SLOTS_FIELD_NUMBER;
+                hash = (53 * hash) + getSSlotsList().hashCode();
+            }
+            hash = (37 * hash) + LENGTH_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getLength());
+            hash = (37 * hash) + USED_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getUsed());
+            if (hasFiberUuid()) {
+                hash = (37 * hash) + FIBER_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getFiberUuid().hashCode();
+            }
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Fiber parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Fiber parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Fiber parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.Fiber prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.Fiber}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Fiber)
+        context.ContextOuterClass.FiberOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Fiber_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Fiber_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Fiber.class, context.ContextOuterClass.Fiber.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.Fiber.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                iD_ = "";
+                srcPort_ = "";
+                dstPort_ = "";
+                localPeerPort_ = "";
+                remotePeerPort_ = "";
+                cSlots_ = emptyIntList();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                lSlots_ = emptyIntList();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                sSlots_ = emptyIntList();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                length_ = 0F;
+                used_ = false;
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuid_ = null;
+                } else {
+                    fiberUuid_ = null;
+                    fiberUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Fiber_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Fiber getDefaultInstanceForType() {
+                return context.ContextOuterClass.Fiber.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Fiber build() {
+                context.ContextOuterClass.Fiber result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Fiber buildPartial() {
+                context.ContextOuterClass.Fiber result = new context.ContextOuterClass.Fiber(this);
+                int from_bitField0_ = bitField0_;
+                result.iD_ = iD_;
+                result.srcPort_ = srcPort_;
+                result.dstPort_ = dstPort_;
+                result.localPeerPort_ = localPeerPort_;
+                result.remotePeerPort_ = remotePeerPort_;
+                if (((bitField0_ & 0x00000001) != 0)) {
+                    cSlots_.makeImmutable();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                }
+                result.cSlots_ = cSlots_;
+                if (((bitField0_ & 0x00000002) != 0)) {
+                    lSlots_.makeImmutable();
+                    bitField0_ = (bitField0_ & ~0x00000002);
+                }
+                result.lSlots_ = lSlots_;
+                if (((bitField0_ & 0x00000004) != 0)) {
+                    sSlots_.makeImmutable();
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                }
+                result.sSlots_ = sSlots_;
+                result.length_ = length_;
+                result.used_ = used_;
+                if (fiberUuidBuilder_ == null) {
+                    result.fiberUuid_ = fiberUuid_;
+                } else {
+                    result.fiberUuid_ = fiberUuidBuilder_.build();
+                }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Fiber) {
+                    return mergeFrom((context.ContextOuterClass.Fiber) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.Fiber other) {
+                if (other == context.ContextOuterClass.Fiber.getDefaultInstance())
+                    return this;
+                if (!other.getID().isEmpty()) {
+                    iD_ = other.iD_;
+                    onChanged();
+                }
+                if (!other.getSrcPort().isEmpty()) {
+                    srcPort_ = other.srcPort_;
+                    onChanged();
+                }
+                if (!other.getDstPort().isEmpty()) {
+                    dstPort_ = other.dstPort_;
+                    onChanged();
+                }
+                if (!other.getLocalPeerPort().isEmpty()) {
+                    localPeerPort_ = other.localPeerPort_;
+                    onChanged();
+                }
+                if (!other.getRemotePeerPort().isEmpty()) {
+                    remotePeerPort_ = other.remotePeerPort_;
+                    onChanged();
+                }
+                if (!other.cSlots_.isEmpty()) {
+                    if (cSlots_.isEmpty()) {
+                        cSlots_ = other.cSlots_;
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    } else {
+                        ensureCSlotsIsMutable();
+                        cSlots_.addAll(other.cSlots_);
+                    }
+                    onChanged();
+                }
+                if (!other.lSlots_.isEmpty()) {
+                    if (lSlots_.isEmpty()) {
+                        lSlots_ = other.lSlots_;
+                        bitField0_ = (bitField0_ & ~0x00000002);
+                    } else {
+                        ensureLSlotsIsMutable();
+                        lSlots_.addAll(other.lSlots_);
+                    }
+                    onChanged();
+                }
+                if (!other.sSlots_.isEmpty()) {
+                    if (sSlots_.isEmpty()) {
+                        sSlots_ = other.sSlots_;
+                        bitField0_ = (bitField0_ & ~0x00000004);
+                    } else {
+                        ensureSSlotsIsMutable();
+                        sSlots_.addAll(other.sSlots_);
+                    }
+                    onChanged();
+                }
+                if (other.getLength() != 0F) {
+                    setLength(other.getLength());
+                }
+                if (other.getUsed() != false) {
+                    setUsed(other.getUsed());
+                }
+                if (other.hasFiberUuid()) {
+                    mergeFiberUuid(other.getFiberUuid());
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.Fiber parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.Fiber) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.lang.Object iD_ = "";
+
+            /**
+             * <code>string ID = 10;</code>
+             * @return The iD.
+             */
+            public java.lang.String getID() {
+                java.lang.Object ref = iD_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    iD_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string ID = 10;</code>
+             * @return The bytes for iD.
+             */
+            public com.google.protobuf.ByteString getIDBytes() {
+                java.lang.Object ref = iD_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    iD_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string ID = 10;</code>
+             * @param value The iD to set.
+             * @return This builder for chaining.
+             */
+            public Builder setID(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                iD_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string ID = 10;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearID() {
+                iD_ = getDefaultInstance().getID();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string ID = 10;</code>
+             * @param value The bytes for iD to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIDBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                iD_ = value;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object srcPort_ = "";
+
+            /**
+             * <code>string src_port = 1;</code>
+             * @return The srcPort.
+             */
+            public java.lang.String getSrcPort() {
+                java.lang.Object ref = srcPort_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    srcPort_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string src_port = 1;</code>
+             * @return The bytes for srcPort.
+             */
+            public com.google.protobuf.ByteString getSrcPortBytes() {
+                java.lang.Object ref = srcPort_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    srcPort_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string src_port = 1;</code>
+             * @param value The srcPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSrcPort(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                srcPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string src_port = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSrcPort() {
+                srcPort_ = getDefaultInstance().getSrcPort();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string src_port = 1;</code>
+             * @param value The bytes for srcPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSrcPortBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                srcPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object dstPort_ = "";
+
+            /**
+             * <code>string dst_port = 2;</code>
+             * @return The dstPort.
+             */
+            public java.lang.String getDstPort() {
+                java.lang.Object ref = dstPort_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    dstPort_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string dst_port = 2;</code>
+             * @return The bytes for dstPort.
+             */
+            public com.google.protobuf.ByteString getDstPortBytes() {
+                java.lang.Object ref = dstPort_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    dstPort_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string dst_port = 2;</code>
+             * @param value The dstPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDstPort(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                dstPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string dst_port = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDstPort() {
+                dstPort_ = getDefaultInstance().getDstPort();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string dst_port = 2;</code>
+             * @param value The bytes for dstPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDstPortBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                dstPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object localPeerPort_ = "";
+
+            /**
+             * <code>string local_peer_port = 3;</code>
+             * @return The localPeerPort.
+             */
+            public java.lang.String getLocalPeerPort() {
+                java.lang.Object ref = localPeerPort_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    localPeerPort_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string local_peer_port = 3;</code>
+             * @return The bytes for localPeerPort.
+             */
+            public com.google.protobuf.ByteString getLocalPeerPortBytes() {
+                java.lang.Object ref = localPeerPort_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    localPeerPort_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string local_peer_port = 3;</code>
+             * @param value The localPeerPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLocalPeerPort(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                localPeerPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string local_peer_port = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearLocalPeerPort() {
+                localPeerPort_ = getDefaultInstance().getLocalPeerPort();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string local_peer_port = 3;</code>
+             * @param value The bytes for localPeerPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLocalPeerPortBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                localPeerPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object remotePeerPort_ = "";
+
+            /**
+             * <code>string remote_peer_port = 4;</code>
+             * @return The remotePeerPort.
+             */
+            public java.lang.String getRemotePeerPort() {
+                java.lang.Object ref = remotePeerPort_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    remotePeerPort_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string remote_peer_port = 4;</code>
+             * @return The bytes for remotePeerPort.
+             */
+            public com.google.protobuf.ByteString getRemotePeerPortBytes() {
+                java.lang.Object ref = remotePeerPort_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    remotePeerPort_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string remote_peer_port = 4;</code>
+             * @param value The remotePeerPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setRemotePeerPort(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                remotePeerPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string remote_peer_port = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearRemotePeerPort() {
+                remotePeerPort_ = getDefaultInstance().getRemotePeerPort();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string remote_peer_port = 4;</code>
+             * @param value The bytes for remotePeerPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setRemotePeerPortBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                remotePeerPort_ = value;
+                onChanged();
+                return this;
+            }
+
+            private com.google.protobuf.Internal.IntList cSlots_ = emptyIntList();
+
+            private void ensureCSlotsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    cSlots_ = mutableCopy(cSlots_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @return A list containing the cSlots.
+             */
+            public java.util.List<java.lang.Integer> getCSlotsList() {
+                return ((bitField0_ & 0x00000001) != 0) ? java.util.Collections.unmodifiableList(cSlots_) : cSlots_;
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @return The count of cSlots.
+             */
+            public int getCSlotsCount() {
+                return cSlots_.size();
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @param index The index of the element to return.
+             * @return The cSlots at the given index.
+             */
+            public int getCSlots(int index) {
+                return cSlots_.getInt(index);
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @param index The index to set the value at.
+             * @param value The cSlots to set.
+             * @return This builder for chaining.
+             */
+            public Builder setCSlots(int index, int value) {
+                ensureCSlotsIsMutable();
+                cSlots_.setInt(index, value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @param value The cSlots to add.
+             * @return This builder for chaining.
+             */
+            public Builder addCSlots(int value) {
+                ensureCSlotsIsMutable();
+                cSlots_.addInt(value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @param values The cSlots to add.
+             * @return This builder for chaining.
+             */
+            public Builder addAllCSlots(java.lang.Iterable<? extends java.lang.Integer> values) {
+                ensureCSlotsIsMutable();
+                com.google.protobuf.AbstractMessageLite.Builder.addAll(values, cSlots_);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 c_slots = 5;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearCSlots() {
+                cSlots_ = emptyIntList();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                onChanged();
+                return this;
+            }
+
+            private com.google.protobuf.Internal.IntList lSlots_ = emptyIntList();
+
+            private void ensureLSlotsIsMutable() {
+                if (!((bitField0_ & 0x00000002) != 0)) {
+                    lSlots_ = mutableCopy(lSlots_);
+                    bitField0_ |= 0x00000002;
+                }
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @return A list containing the lSlots.
+             */
+            public java.util.List<java.lang.Integer> getLSlotsList() {
+                return ((bitField0_ & 0x00000002) != 0) ? java.util.Collections.unmodifiableList(lSlots_) : lSlots_;
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @return The count of lSlots.
+             */
+            public int getLSlotsCount() {
+                return lSlots_.size();
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @param index The index of the element to return.
+             * @return The lSlots at the given index.
+             */
+            public int getLSlots(int index) {
+                return lSlots_.getInt(index);
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @param index The index to set the value at.
+             * @param value The lSlots to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLSlots(int index, int value) {
+                ensureLSlotsIsMutable();
+                lSlots_.setInt(index, value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @param value The lSlots to add.
+             * @return This builder for chaining.
+             */
+            public Builder addLSlots(int value) {
+                ensureLSlotsIsMutable();
+                lSlots_.addInt(value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @param values The lSlots to add.
+             * @return This builder for chaining.
+             */
+            public Builder addAllLSlots(java.lang.Iterable<? extends java.lang.Integer> values) {
+                ensureLSlotsIsMutable();
+                com.google.protobuf.AbstractMessageLite.Builder.addAll(values, lSlots_);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 l_slots = 6;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearLSlots() {
+                lSlots_ = emptyIntList();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            private com.google.protobuf.Internal.IntList sSlots_ = emptyIntList();
+
+            private void ensureSSlotsIsMutable() {
+                if (!((bitField0_ & 0x00000004) != 0)) {
+                    sSlots_ = mutableCopy(sSlots_);
+                    bitField0_ |= 0x00000004;
+                }
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @return A list containing the sSlots.
+             */
+            public java.util.List<java.lang.Integer> getSSlotsList() {
+                return ((bitField0_ & 0x00000004) != 0) ? java.util.Collections.unmodifiableList(sSlots_) : sSlots_;
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @return The count of sSlots.
+             */
+            public int getSSlotsCount() {
+                return sSlots_.size();
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @param index The index of the element to return.
+             * @return The sSlots at the given index.
+             */
+            public int getSSlots(int index) {
+                return sSlots_.getInt(index);
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @param index The index to set the value at.
+             * @param value The sSlots to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSSlots(int index, int value) {
+                ensureSSlotsIsMutable();
+                sSlots_.setInt(index, value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @param value The sSlots to add.
+             * @return This builder for chaining.
+             */
+            public Builder addSSlots(int value) {
+                ensureSSlotsIsMutable();
+                sSlots_.addInt(value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @param values The sSlots to add.
+             * @return This builder for chaining.
+             */
+            public Builder addAllSSlots(java.lang.Iterable<? extends java.lang.Integer> values) {
+                ensureSSlotsIsMutable();
+                com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sSlots_);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated int32 s_slots = 7;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSSlots() {
+                sSlots_ = emptyIntList();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                onChanged();
+                return this;
+            }
+
+            private float length_;
+
+            /**
+             * <code>float length = 8;</code>
+             * @return The length.
+             */
+            @java.lang.Override
+            public float getLength() {
+                return length_;
+            }
+
+            /**
+             * <code>float length = 8;</code>
+             * @param value The length to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLength(float value) {
+                length_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>float length = 8;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearLength() {
+                length_ = 0F;
+                onChanged();
+                return this;
+            }
+
+            private boolean used_;
+
+            /**
+             * <code>bool used = 9;</code>
+             * @return The used.
+             */
+            @java.lang.Override
+            public boolean getUsed() {
+                return used_;
+            }
+
+            /**
+             * <code>bool used = 9;</code>
+             * @param value The used to set.
+             * @return This builder for chaining.
+             */
+            public Builder setUsed(boolean value) {
+                used_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool used = 9;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearUsed() {
+                used_ = false;
+                onChanged();
+                return this;
+            }
+
+            private context.ContextOuterClass.FiberId fiberUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.FiberId, context.ContextOuterClass.FiberId.Builder, context.ContextOuterClass.FiberIdOrBuilder> fiberUuidBuilder_;
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             * @return Whether the fiberUuid field is set.
+             */
+            public boolean hasFiberUuid() {
+                return fiberUuidBuilder_ != null || fiberUuid_ != null;
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             * @return The fiberUuid.
+             */
+            public context.ContextOuterClass.FiberId getFiberUuid() {
+                if (fiberUuidBuilder_ == null) {
+                    return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_;
+                } else {
+                    return fiberUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            public Builder setFiberUuid(context.ContextOuterClass.FiberId value) {
+                if (fiberUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    fiberUuid_ = value;
+                    onChanged();
+                } else {
+                    fiberUuidBuilder_.setMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            public Builder setFiberUuid(context.ContextOuterClass.FiberId.Builder builderForValue) {
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuid_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    fiberUuidBuilder_.setMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            public Builder mergeFiberUuid(context.ContextOuterClass.FiberId value) {
+                if (fiberUuidBuilder_ == null) {
+                    if (fiberUuid_ != null) {
+                        fiberUuid_ = context.ContextOuterClass.FiberId.newBuilder(fiberUuid_).mergeFrom(value).buildPartial();
+                    } else {
+                        fiberUuid_ = value;
+                    }
+                    onChanged();
+                } else {
+                    fiberUuidBuilder_.mergeFrom(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            public Builder clearFiberUuid() {
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuid_ = null;
+                    onChanged();
+                } else {
+                    fiberUuid_ = null;
+                    fiberUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            public context.ContextOuterClass.FiberId.Builder getFiberUuidBuilder() {
+                onChanged();
+                return getFiberUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            public context.ContextOuterClass.FiberIdOrBuilder getFiberUuidOrBuilder() {
+                if (fiberUuidBuilder_ != null) {
+                    return fiberUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return fiberUuid_ == null ? context.ContextOuterClass.FiberId.getDefaultInstance() : fiberUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.FiberId fiber_uuid = 11;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.FiberId, context.ContextOuterClass.FiberId.Builder, context.ContextOuterClass.FiberIdOrBuilder> getFiberUuidFieldBuilder() {
+                if (fiberUuidBuilder_ == null) {
+                    fiberUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.FiberId, context.ContextOuterClass.FiberId.Builder, context.ContextOuterClass.FiberIdOrBuilder>(getFiberUuid(), getParentForChildren(), isClean());
+                    fiberUuid_ = null;
+                }
+                return fiberUuidBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Fiber)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.Fiber)
+        private static final context.ContextOuterClass.Fiber DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Fiber();
+        }
+
+        public static context.ContextOuterClass.Fiber getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<Fiber> PARSER = new com.google.protobuf.AbstractParser<Fiber>() {
+
+            @java.lang.Override
+            public Fiber parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new Fiber(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<Fiber> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Fiber> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Fiber getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface OpticalLinkDetailsOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkDetails)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>float length = 1;</code>
+         * @return The length.
+         */
+        float getLength();
+
+        /**
+         * <code>string source = 2;</code>
+         * @return The source.
+         */
+        java.lang.String getSource();
+
+        /**
+         * <code>string source = 2;</code>
+         * @return The bytes for source.
+         */
+        com.google.protobuf.ByteString getSourceBytes();
+
+        /**
+         * <code>string target = 3;</code>
+         * @return The target.
+         */
+        java.lang.String getTarget();
+
+        /**
+         * <code>string target = 3;</code>
+         * @return The bytes for target.
+         */
+        com.google.protobuf.ByteString getTargetBytes();
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        java.util.List<context.ContextOuterClass.Fiber> getFibersList();
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        context.ContextOuterClass.Fiber getFibers(int index);
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        int getFibersCount();
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.FiberOrBuilder> getFibersOrBuilderList();
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        context.ContextOuterClass.FiberOrBuilder getFibersOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.OpticalLinkDetails}
+     */
+    public static final class OpticalLinkDetails extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkDetails)
+    OpticalLinkDetailsOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use OpticalLinkDetails.newBuilder() to construct.
+        private OpticalLinkDetails(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private OpticalLinkDetails() {
+            source_ = "";
+            target_ = "";
+            fibers_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new OpticalLinkDetails();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private OpticalLinkDetails(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 13:
+                            {
+                                length_ = input.readFloat();
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                source_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                target_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    fibers_ = new java.util.ArrayList<context.ContextOuterClass.Fiber>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                fibers_.add(input.readMessage(context.ContextOuterClass.Fiber.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    fibers_ = java.util.Collections.unmodifiableList(fibers_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class);
+        }
+
+        public static final int LENGTH_FIELD_NUMBER = 1;
+
+        private float length_;
+
+        /**
+         * <code>float length = 1;</code>
+         * @return The length.
+         */
+        @java.lang.Override
+        public float getLength() {
+            return length_;
+        }
+
+        public static final int SOURCE_FIELD_NUMBER = 2;
+
+        private volatile java.lang.Object source_;
+
+        /**
+         * <code>string source = 2;</code>
+         * @return The source.
+         */
+        @java.lang.Override
+        public java.lang.String getSource() {
+            java.lang.Object ref = source_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                source_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string source = 2;</code>
+         * @return The bytes for source.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getSourceBytes() {
+            java.lang.Object ref = source_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                source_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int TARGET_FIELD_NUMBER = 3;
+
+        private volatile java.lang.Object target_;
+
+        /**
+         * <code>string target = 3;</code>
+         * @return The target.
+         */
+        @java.lang.Override
+        public java.lang.String getTarget() {
+            java.lang.Object ref = target_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                target_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string target = 3;</code>
+         * @return The bytes for target.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getTargetBytes() {
+            java.lang.Object ref = target_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                target_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int FIBERS_FIELD_NUMBER = 4;
+
+        private java.util.List<context.ContextOuterClass.Fiber> fibers_;
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Fiber> getFibersList() {
+            return fibers_;
+        }
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.FiberOrBuilder> getFibersOrBuilderList() {
+            return fibers_;
+        }
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        @java.lang.Override
+        public int getFibersCount() {
+            return fibers_.size();
+        }
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Fiber getFibers(int index) {
+            return fibers_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.Fiber fibers = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.FiberOrBuilder getFibersOrBuilder(int index) {
+            return fibers_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (length_ != 0F) {
+                output.writeFloat(1, length_);
+            }
+            if (!getSourceBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, source_);
+            }
+            if (!getTargetBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, target_);
+            }
+            for (int i = 0; i < fibers_.size(); i++) {
+                output.writeMessage(4, fibers_.get(i));
+            }
+            unknownFields.writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (length_ != 0F) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, length_);
+            }
+            if (!getSourceBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, source_);
+            }
+            if (!getTargetBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, target_);
+            }
+            for (int i = 0; i < fibers_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, fibers_.get(i));
+            }
+            size += unknownFields.getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.OpticalLinkDetails)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.OpticalLinkDetails other = (context.ContextOuterClass.OpticalLinkDetails) obj;
+            if (java.lang.Float.floatToIntBits(getLength()) != java.lang.Float.floatToIntBits(other.getLength()))
+                return false;
+            if (!getSource().equals(other.getSource()))
+                return false;
+            if (!getTarget().equals(other.getTarget()))
+                return false;
+            if (!getFibersList().equals(other.getFibersList()))
+                return false;
+            if (!unknownFields.equals(other.unknownFields))
+                return false;
+            return true;
+        }
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            hash = (37 * hash) + LENGTH_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getLength());
+            hash = (37 * hash) + SOURCE_FIELD_NUMBER;
+            hash = (53 * hash) + getSource().hashCode();
+            hash = (37 * hash) + TARGET_FIELD_NUMBER;
+            hash = (53 * hash) + getTarget().hashCode();
+            if (getFibersCount() > 0) {
+                hash = (37 * hash) + FIBERS_FIELD_NUMBER;
+                hash = (53 * hash) + getFibersList().hashCode();
+            }
+            hash = (29 * hash) + unknownFields.hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.OpticalLinkDetails prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.OpticalLinkDetails}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkDetails)
+        context.ContextOuterClass.OpticalLinkDetailsOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.OpticalLinkDetails.newBuilder()
+            private Builder() {
+                maybeForceBuilderInitialization();
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getFibersFieldBuilder();
+                }
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                length_ = 0F;
+                source_ = "";
+                target_ = "";
+                if (fibersBuilder_ == null) {
+                    fibers_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                    fibersBuilder_.clear();
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() {
+                return context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalLinkDetails build() {
+                context.ContextOuterClass.OpticalLinkDetails result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.OpticalLinkDetails buildPartial() {
+                context.ContextOuterClass.OpticalLinkDetails result = new context.ContextOuterClass.OpticalLinkDetails(this);
+                int from_bitField0_ = bitField0_;
+                result.length_ = length_;
+                result.source_ = source_;
+                result.target_ = target_;
+                if (fibersBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        fibers_ = java.util.Collections.unmodifiableList(fibers_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.fibers_ = fibers_;
+                } else {
+                    result.fibers_ = fibersBuilder_.build();
+                }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.OpticalLinkDetails) {
+                    return mergeFrom((context.ContextOuterClass.OpticalLinkDetails) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.OpticalLinkDetails other) {
+                if (other == context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance())
+                    return this;
+                if (other.getLength() != 0F) {
+                    setLength(other.getLength());
+                }
+                if (!other.getSource().isEmpty()) {
+                    source_ = other.source_;
+                    onChanged();
+                }
+                if (!other.getTarget().isEmpty()) {
+                    target_ = other.target_;
+                    onChanged();
+                }
+                if (fibersBuilder_ == null) {
+                    if (!other.fibers_.isEmpty()) {
+                        if (fibers_.isEmpty()) {
+                            fibers_ = other.fibers_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureFibersIsMutable();
+                            fibers_.addAll(other.fibers_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.fibers_.isEmpty()) {
+                        if (fibersBuilder_.isEmpty()) {
+                            fibersBuilder_.dispose();
+                            fibersBuilder_ = null;
+                            fibers_ = other.fibers_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            fibersBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getFibersFieldBuilder() : null;
+                        } else {
+                            fibersBuilder_.addAllMessages(other.fibers_);
+                        }
+                    }
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                context.ContextOuterClass.OpticalLinkDetails parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.OpticalLinkDetails) e.getUnfinishedMessage();
+                    throw e.unwrapIOException();
+                } finally {
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
+                }
+                return this;
+            }
+
+            private int bitField0_;
+
+            private float length_;
+
+            /**
+             * <code>float length = 1;</code>
+             * @return The length.
+             */
+            @java.lang.Override
+            public float getLength() {
+                return length_;
+            }
+
+            /**
+             * <code>float length = 1;</code>
+             * @param value The length to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLength(float value) {
+                length_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>float length = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearLength() {
+                length_ = 0F;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object source_ = "";
+
+            /**
+             * <code>string source = 2;</code>
+             * @return The source.
+             */
+            public java.lang.String getSource() {
+                java.lang.Object ref = source_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    source_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string source = 2;</code>
+             * @return The bytes for source.
+             */
+            public com.google.protobuf.ByteString getSourceBytes() {
+                java.lang.Object ref = source_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    source_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string source = 2;</code>
+             * @param value The source to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSource(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                source_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string source = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSource() {
+                source_ = getDefaultInstance().getSource();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string source = 2;</code>
+             * @param value The bytes for source to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSourceBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                source_ = value;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object target_ = "";
+
+            /**
+             * <code>string target = 3;</code>
+             * @return The target.
+             */
+            public java.lang.String getTarget() {
+                java.lang.Object ref = target_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    target_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string target = 3;</code>
+             * @return The bytes for target.
+             */
+            public com.google.protobuf.ByteString getTargetBytes() {
+                java.lang.Object ref = target_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    target_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string target = 3;</code>
+             * @param value The target to set.
+             * @return This builder for chaining.
+             */
+            public Builder setTarget(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                target_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string target = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearTarget() {
+                target_ = getDefaultInstance().getTarget();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string target = 3;</code>
+             * @param value The bytes for target to set.
+             * @return This builder for chaining.
+             */
+            public Builder setTargetBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                target_ = value;
+                onChanged();
+                return this;
+            }
+
+            private java.util.List<context.ContextOuterClass.Fiber> fibers_ = java.util.Collections.emptyList();
+
+            private void ensureFibersIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    fibers_ = new java.util.ArrayList<context.ContextOuterClass.Fiber>(fibers_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Fiber, context.ContextOuterClass.Fiber.Builder, context.ContextOuterClass.FiberOrBuilder> fibersBuilder_;
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Fiber> getFibersList() {
+                if (fibersBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(fibers_);
+                } else {
+                    return fibersBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public int getFibersCount() {
+                if (fibersBuilder_ == null) {
+                    return fibers_.size();
+                } else {
+                    return fibersBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public context.ContextOuterClass.Fiber getFibers(int index) {
+                if (fibersBuilder_ == null) {
+                    return fibers_.get(index);
+                } else {
+                    return fibersBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder setFibers(int index, context.ContextOuterClass.Fiber value) {
+                if (fibersBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureFibersIsMutable();
+                    fibers_.set(index, value);
+                    onChanged();
+                } else {
+                    fibersBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder setFibers(int index, context.ContextOuterClass.Fiber.Builder builderForValue) {
+                if (fibersBuilder_ == null) {
+                    ensureFibersIsMutable();
+                    fibers_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    fibersBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder addFibers(context.ContextOuterClass.Fiber value) {
+                if (fibersBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureFibersIsMutable();
+                    fibers_.add(value);
+                    onChanged();
+                } else {
+                    fibersBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder addFibers(int index, context.ContextOuterClass.Fiber value) {
+                if (fibersBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureFibersIsMutable();
+                    fibers_.add(index, value);
+                    onChanged();
+                } else {
+                    fibersBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder addFibers(context.ContextOuterClass.Fiber.Builder builderForValue) {
+                if (fibersBuilder_ == null) {
+                    ensureFibersIsMutable();
+                    fibers_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    fibersBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder addFibers(int index, context.ContextOuterClass.Fiber.Builder builderForValue) {
+                if (fibersBuilder_ == null) {
+                    ensureFibersIsMutable();
+                    fibers_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    fibersBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder addAllFibers(java.lang.Iterable<? extends context.ContextOuterClass.Fiber> values) {
+                if (fibersBuilder_ == null) {
+                    ensureFibersIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, fibers_);
+                    onChanged();
+                } else {
+                    fibersBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder clearFibers() {
+                if (fibersBuilder_ == null) {
+                    fibers_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    fibersBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public Builder removeFibers(int index) {
+                if (fibersBuilder_ == null) {
+                    ensureFibersIsMutable();
+                    fibers_.remove(index);
+                    onChanged();
+                } else {
+                    fibersBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public context.ContextOuterClass.Fiber.Builder getFibersBuilder(int index) {
+                return getFibersFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public context.ContextOuterClass.FiberOrBuilder getFibersOrBuilder(int index) {
+                if (fibersBuilder_ == null) {
+                    return fibers_.get(index);
+                } else {
+                    return fibersBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.FiberOrBuilder> getFibersOrBuilderList() {
+                if (fibersBuilder_ != null) {
+                    return fibersBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(fibers_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public context.ContextOuterClass.Fiber.Builder addFibersBuilder() {
+                return getFibersFieldBuilder().addBuilder(context.ContextOuterClass.Fiber.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public context.ContextOuterClass.Fiber.Builder addFibersBuilder(int index) {
+                return getFibersFieldBuilder().addBuilder(index, context.ContextOuterClass.Fiber.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Fiber fibers = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Fiber.Builder> getFibersBuilderList() {
+                return getFibersFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Fiber, context.ContextOuterClass.Fiber.Builder, context.ContextOuterClass.FiberOrBuilder> getFibersFieldBuilder() {
+                if (fibersBuilder_ == null) {
+                    fibersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Fiber, context.ContextOuterClass.Fiber.Builder, context.ContextOuterClass.FiberOrBuilder>(fibers_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    fibers_ = null;
+                }
+                return fibersBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.OpticalLinkDetails)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.OpticalLinkDetails)
+        private static final context.ContextOuterClass.OpticalLinkDetails DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkDetails();
+        }
+
+        public static context.ContextOuterClass.OpticalLinkDetails getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<OpticalLinkDetails> PARSER = new com.google.protobuf.AbstractParser<OpticalLinkDetails>() {
+
+            @java.lang.Override
+            public OpticalLinkDetails parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new OpticalLinkDetails(input, extensionRegistry);
+            }
+        };
+
+        public static com.google.protobuf.Parser<OpticalLinkDetails> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<OpticalLinkDetails> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface OpticalLinkOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLink)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>string name = 1;</code>
+         * @return The name.
+         */
+        java.lang.String getName();
+
+        /**
+         * <code>string name = 1;</code>
+         * @return The bytes for name.
+         */
+        com.google.protobuf.ByteString getNameBytes();
+
+        /**
+         * <code>.context.OpticalLinkDetails details = 2;</code>
+         * @return Whether the details field is set.
+         */
+        boolean hasDetails();
+
+        /**
+         * <code>.context.OpticalLinkDetails details = 2;</code>
+         * @return The details.
+         */
+        context.ContextOuterClass.OpticalLinkDetails getDetails();
+
+        /**
+         * <code>.context.OpticalLinkDetails details = 2;</code>
+         */
+        context.ContextOuterClass.OpticalLinkDetailsOrBuilder getDetailsOrBuilder();
+
+        /**
+         * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+         * @return Whether the opticalLinkUuid field is set.
+         */
+        boolean hasOpticalLinkUuid();
+
+        /**
+         * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+         * @return The opticalLinkUuid.
+         */
+        context.ContextOuterClass.OpticalLinkId getOpticalLinkUuid();
+
+        /**
+         * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+         */
+        context.ContextOuterClass.OpticalLinkIdOrBuilder getOpticalLinkUuidOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.OpticalLink}
+     */
+    public static final class OpticalLink extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLink)
+    OpticalLinkOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use OpticalLink.newBuilder() to construct.
+        private OpticalLink(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private OpticalLink() {
+            name_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new OpticalLink();
+        }
+
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private OpticalLink(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.OpticalLinkDetails.Builder subBuilder = null;
+                                if (details_ != null) {
+                                    subBuilder = details_.toBuilder();
+                                }
+                                details_ = input.readMessage(context.ContextOuterClass.OpticalLinkDetails.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(details_);
+                                    details_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 26:
+                            {
+                                context.ContextOuterClass.OpticalLinkId.Builder subBuilder = null;
+                                if (opticalLinkUuid_ != null) {
+                                    subBuilder = opticalLinkUuid_.toBuilder();
+                                }
+                                opticalLinkUuid_ = input.readMessage(context.ContextOuterClass.OpticalLinkId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(opticalLinkUuid_);
+                                    opticalLinkUuid_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
-            return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+            return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor;
         }
 
         @java.lang.Override
         protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
-            return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
+            return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class);
         }
 
-        public static final int CONTEXT_ID_FIELD_NUMBER = 1;
+        public static final int NAME_FIELD_NUMBER = 1;
 
-        private context.ContextOuterClass.ContextId contextId_;
+        private volatile java.lang.Object name_;
 
         /**
-         * <code>.context.ContextId context_id = 1;</code>
-         * @return Whether the contextId field is set.
+         * <code>string name = 1;</code>
+         * @return The name.
          */
         @java.lang.Override
-        public boolean hasContextId() {
-            return contextId_ != null;
+        public java.lang.String getName() {
+            java.lang.Object ref = name_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+            } else {
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                name_ = s;
+                return s;
+            }
         }
 
         /**
-         * <code>.context.ContextId context_id = 1;</code>
-         * @return The contextId.
+         * <code>string name = 1;</code>
+         * @return The bytes for name.
          */
         @java.lang.Override
-        public context.ContextOuterClass.ContextId getContextId() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        public com.google.protobuf.ByteString getNameBytes() {
+            java.lang.Object ref = name_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                name_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
         }
 
+        public static final int DETAILS_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.OpticalLinkDetails details_;
+
         /**
-         * <code>.context.ContextId context_id = 1;</code>
+         * <code>.context.OpticalLinkDetails details = 2;</code>
+         * @return Whether the details field is set.
          */
         @java.lang.Override
-        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        public boolean hasDetails() {
+            return details_ != null;
         }
 
-        public static final int AUTHENTICATED_FIELD_NUMBER = 2;
+        /**
+         * <code>.context.OpticalLinkDetails details = 2;</code>
+         * @return The details.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalLinkDetails getDetails() {
+            return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_;
+        }
+
+        /**
+         * <code>.context.OpticalLinkDetails details = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getDetailsOrBuilder() {
+            return getDetails();
+        }
 
-        private boolean authenticated_ = false;
+        public static final int OPTICAL_LINK_UUID_FIELD_NUMBER = 3;
+
+        private context.ContextOuterClass.OpticalLinkId opticalLinkUuid_;
 
         /**
-         * <code>bool authenticated = 2;</code>
-         * @return The authenticated.
+         * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+         * @return Whether the opticalLinkUuid field is set.
          */
         @java.lang.Override
-        public boolean getAuthenticated() {
-            return authenticated_;
+        public boolean hasOpticalLinkUuid() {
+            return opticalLinkUuid_ != null;
+        }
+
+        /**
+         * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+         * @return The opticalLinkUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalLinkId getOpticalLinkUuid() {
+            return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_;
+        }
+
+        /**
+         * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.OpticalLinkIdOrBuilder getOpticalLinkUuidOrBuilder() {
+            return getOpticalLinkUuid();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -68795,13 +78731,16 @@ public final class ContextOuterClass {
 
         @java.lang.Override
         public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-            if (contextId_ != null) {
-                output.writeMessage(1, getContextId());
+            if (!getNameBytes().isEmpty()) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
             }
-            if (authenticated_ != false) {
-                output.writeBool(2, authenticated_);
+            if (details_ != null) {
+                output.writeMessage(2, getDetails());
+            }
+            if (opticalLinkUuid_ != null) {
+                output.writeMessage(3, getOpticalLinkUuid());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -68810,13 +78749,16 @@ public final class ContextOuterClass {
             if (size != -1)
                 return size;
             size = 0;
-            if (contextId_ != null) {
-                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
+            if (!getNameBytes().isEmpty()) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
             }
-            if (authenticated_ != false) {
-                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, authenticated_);
+            if (details_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDetails());
             }
-            size += getUnknownFields().getSerializedSize();
+            if (opticalLinkUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getOpticalLinkUuid());
+            }
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -68826,19 +78768,25 @@ public final class ContextOuterClass {
             if (obj == this) {
                 return true;
             }
-            if (!(obj instanceof context.ContextOuterClass.AuthenticationResult)) {
+            if (!(obj instanceof context.ContextOuterClass.OpticalLink)) {
                 return super.equals(obj);
             }
-            context.ContextOuterClass.AuthenticationResult other = (context.ContextOuterClass.AuthenticationResult) obj;
-            if (hasContextId() != other.hasContextId())
+            context.ContextOuterClass.OpticalLink other = (context.ContextOuterClass.OpticalLink) obj;
+            if (!getName().equals(other.getName()))
                 return false;
-            if (hasContextId()) {
-                if (!getContextId().equals(other.getContextId()))
+            if (hasDetails() != other.hasDetails())
+                return false;
+            if (hasDetails()) {
+                if (!getDetails().equals(other.getDetails()))
                     return false;
             }
-            if (getAuthenticated() != other.getAuthenticated())
+            if (hasOpticalLinkUuid() != other.hasOpticalLinkUuid())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (hasOpticalLinkUuid()) {
+                if (!getOpticalLinkUuid().equals(other.getOpticalLinkUuid()))
+                    return false;
+            }
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -68850,62 +78798,66 @@ public final class ContextOuterClass {
             }
             int hash = 41;
             hash = (19 * hash) + getDescriptor().hashCode();
-            if (hasContextId()) {
-                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
-                hash = (53 * hash) + getContextId().hashCode();
+            hash = (37 * hash) + NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getName().hashCode();
+            if (hasDetails()) {
+                hash = (37 * hash) + DETAILS_FIELD_NUMBER;
+                hash = (53 * hash) + getDetails().hashCode();
             }
-            hash = (37 * hash) + AUTHENTICATED_FIELD_NUMBER;
-            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAuthenticated());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            if (hasOpticalLinkUuid()) {
+                hash = (37 * hash) + OPTICAL_LINK_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getOpticalLinkUuid().hashCode();
+            }
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
             return PARSER.parseFrom(data, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input) throws java.io.IOException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+        public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
         }
 
-        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
             return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
         }
 
@@ -68918,7 +78870,7 @@ public final class ContextOuterClass {
             return DEFAULT_INSTANCE.toBuilder();
         }
 
-        public static Builder newBuilder(context.ContextOuterClass.AuthenticationResult prototype) {
+        public static Builder newBuilder(context.ContextOuterClass.OpticalLink prototype) {
             return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
         }
 
@@ -68934,54 +78886,67 @@ public final class ContextOuterClass {
         }
 
         /**
-         * Protobuf type {@code context.AuthenticationResult}
+         * Protobuf type {@code context.OpticalLink}
          */
-        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.AuthenticationResult)
-        context.ContextOuterClass.AuthenticationResultOrBuilder {
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalLink)
+        context.ContextOuterClass.OpticalLinkOrBuilder {
 
             public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
-                return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+                return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor;
             }
 
             @java.lang.Override
             protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
-                return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
+                return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class);
             }
 
-            // Construct using context.ContextOuterClass.AuthenticationResult.newBuilder()
+            // Construct using context.ContextOuterClass.OpticalLink.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
-                    contextIdBuilder_ = null;
+                name_ = "";
+                if (detailsBuilder_ == null) {
+                    details_ = null;
+                } else {
+                    details_ = null;
+                    detailsBuilder_ = null;
+                }
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuid_ = null;
+                } else {
+                    opticalLinkUuid_ = null;
+                    opticalLinkUuidBuilder_ = null;
                 }
-                authenticated_ = false;
                 return this;
             }
 
             @java.lang.Override
             public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
-                return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+                return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor;
             }
 
             @java.lang.Override
-            public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
-                return context.ContextOuterClass.AuthenticationResult.getDefaultInstance();
+            public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() {
+                return context.ContextOuterClass.OpticalLink.getDefaultInstance();
             }
 
             @java.lang.Override
-            public context.ContextOuterClass.AuthenticationResult build() {
-                context.ContextOuterClass.AuthenticationResult result = buildPartial();
+            public context.ContextOuterClass.OpticalLink build() {
+                context.ContextOuterClass.OpticalLink result = buildPartial();
                 if (!result.isInitialized()) {
                     throw newUninitializedMessageException(result);
                 }
@@ -68989,45 +78954,77 @@ public final class ContextOuterClass {
             }
 
             @java.lang.Override
-            public context.ContextOuterClass.AuthenticationResult buildPartial() {
-                context.ContextOuterClass.AuthenticationResult result = new context.ContextOuterClass.AuthenticationResult(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+            public context.ContextOuterClass.OpticalLink buildPartial() {
+                context.ContextOuterClass.OpticalLink result = new context.ContextOuterClass.OpticalLink(this);
+                result.name_ = name_;
+                if (detailsBuilder_ == null) {
+                    result.details_ = details_;
+                } else {
+                    result.details_ = detailsBuilder_.build();
+                }
+                if (opticalLinkUuidBuilder_ == null) {
+                    result.opticalLinkUuid_ = opticalLinkUuid_;
+                } else {
+                    result.opticalLinkUuid_ = opticalLinkUuidBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(context.ContextOuterClass.AuthenticationResult result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.authenticated_ = authenticated_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.Message other) {
-                if (other instanceof context.ContextOuterClass.AuthenticationResult) {
-                    return mergeFrom((context.ContextOuterClass.AuthenticationResult) other);
+                if (other instanceof context.ContextOuterClass.OpticalLink) {
+                    return mergeFrom((context.ContextOuterClass.OpticalLink) other);
                 } else {
                     super.mergeFrom(other);
                     return this;
                 }
             }
 
-            public Builder mergeFrom(context.ContextOuterClass.AuthenticationResult other) {
-                if (other == context.ContextOuterClass.AuthenticationResult.getDefaultInstance())
+            public Builder mergeFrom(context.ContextOuterClass.OpticalLink other) {
+                if (other == context.ContextOuterClass.OpticalLink.getDefaultInstance())
                     return this;
-                if (other.hasContextId()) {
-                    mergeContextId(other.getContextId());
+                if (!other.getName().isEmpty()) {
+                    name_ = other.name_;
+                    onChanged();
                 }
-                if (other.getAuthenticated() != false) {
-                    setAuthenticated(other.getAuthenticated());
+                if (other.hasDetails()) {
+                    mergeDetails(other.getDetails());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                if (other.hasOpticalLinkUuid()) {
+                    mergeOpticalLinkUuid(other.getOpticalLinkUuid());
+                }
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -69039,206 +79036,320 @@ public final class ContextOuterClass {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                context.ContextOuterClass.OpticalLink parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    authenticated_ = input.readBool();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (context.ContextOuterClass.OpticalLink) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
+            private java.lang.Object name_ = "";
 
-            private context.ContextOuterClass.ContextId contextId_;
+            /**
+             * <code>string name = 1;</code>
+             * @return The name.
+             */
+            public java.lang.String getName() {
+                java.lang.Object ref = name_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    name_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
 
-            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
+            /**
+             * <code>string name = 1;</code>
+             * @return The bytes for name.
+             */
+            public com.google.protobuf.ByteString getNameBytes() {
+                java.lang.Object ref = name_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    name_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
-             * @return Whether the contextId field is set.
+             * <code>string name = 1;</code>
+             * @param value The name to set.
+             * @return This builder for chaining.
              */
-            public boolean hasContextId() {
-                return ((bitField0_ & 0x00000001) != 0);
+            public Builder setName(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                name_ = value;
+                onChanged();
+                return this;
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
-             * @return The contextId.
+             * <code>string name = 1;</code>
+             * @return This builder for chaining.
              */
-            public context.ContextOuterClass.ContextId getContextId() {
-                if (contextIdBuilder_ == null) {
-                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+            public Builder clearName() {
+                name_ = getDefaultInstance().getName();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 1;</code>
+             * @param value The bytes for name to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                name_ = value;
+                onChanged();
+                return this;
+            }
+
+            private context.ContextOuterClass.OpticalLinkDetails details_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkDetails, context.ContextOuterClass.OpticalLinkDetails.Builder, context.ContextOuterClass.OpticalLinkDetailsOrBuilder> detailsBuilder_;
+
+            /**
+             * <code>.context.OpticalLinkDetails details = 2;</code>
+             * @return Whether the details field is set.
+             */
+            public boolean hasDetails() {
+                return detailsBuilder_ != null || details_ != null;
+            }
+
+            /**
+             * <code>.context.OpticalLinkDetails details = 2;</code>
+             * @return The details.
+             */
+            public context.ContextOuterClass.OpticalLinkDetails getDetails() {
+                if (detailsBuilder_ == null) {
+                    return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_;
                 } else {
-                    return contextIdBuilder_.getMessage();
+                    return detailsBuilder_.getMessage();
                 }
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            public Builder setContextId(context.ContextOuterClass.ContextId value) {
-                if (contextIdBuilder_ == null) {
+            public Builder setDetails(context.ContextOuterClass.OpticalLinkDetails value) {
+                if (detailsBuilder_ == null) {
                     if (value == null) {
                         throw new NullPointerException();
                     }
-                    contextId_ = value;
+                    details_ = value;
+                    onChanged();
                 } else {
-                    contextIdBuilder_.setMessage(value);
+                    detailsBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
-                if (contextIdBuilder_ == null) {
-                    contextId_ = builderForValue.build();
+            public Builder setDetails(context.ContextOuterClass.OpticalLinkDetails.Builder builderForValue) {
+                if (detailsBuilder_ == null) {
+                    details_ = builderForValue.build();
+                    onChanged();
                 } else {
-                    contextIdBuilder_.setMessage(builderForValue.build());
+                    detailsBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
-                if (contextIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
-                        getContextIdBuilder().mergeFrom(value);
+            public Builder mergeDetails(context.ContextOuterClass.OpticalLinkDetails value) {
+                if (detailsBuilder_ == null) {
+                    if (details_ != null) {
+                        details_ = context.ContextOuterClass.OpticalLinkDetails.newBuilder(details_).mergeFrom(value).buildPartial();
                     } else {
-                        contextId_ = value;
+                        details_ = value;
                     }
+                    onChanged();
                 } else {
-                    contextIdBuilder_.mergeFrom(value);
+                    detailsBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            public Builder clearContextId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                contextId_ = null;
-                if (contextIdBuilder_ != null) {
-                    contextIdBuilder_.dispose();
-                    contextIdBuilder_ = null;
+            public Builder clearDetails() {
+                if (detailsBuilder_ == null) {
+                    details_ = null;
+                    onChanged();
+                } else {
+                    details_ = null;
+                    detailsBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-                bitField0_ |= 0x00000001;
+            public context.ContextOuterClass.OpticalLinkDetails.Builder getDetailsBuilder() {
                 onChanged();
-                return getContextIdFieldBuilder().getBuilder();
+                return getDetailsFieldBuilder().getBuilder();
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-                if (contextIdBuilder_ != null) {
-                    return contextIdBuilder_.getMessageOrBuilder();
+            public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getDetailsOrBuilder() {
+                if (detailsBuilder_ != null) {
+                    return detailsBuilder_.getMessageOrBuilder();
                 } else {
-                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                    return details_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : details_;
                 }
             }
 
             /**
-             * <code>.context.ContextId context_id = 1;</code>
+             * <code>.context.OpticalLinkDetails details = 2;</code>
              */
-            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
-                if (contextIdBuilder_ == null) {
-                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
-                    contextId_ = null;
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkDetails, context.ContextOuterClass.OpticalLinkDetails.Builder, context.ContextOuterClass.OpticalLinkDetailsOrBuilder> getDetailsFieldBuilder() {
+                if (detailsBuilder_ == null) {
+                    detailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkDetails, context.ContextOuterClass.OpticalLinkDetails.Builder, context.ContextOuterClass.OpticalLinkDetailsOrBuilder>(getDetails(), getParentForChildren(), isClean());
+                    details_ = null;
                 }
-                return contextIdBuilder_;
+                return detailsBuilder_;
             }
 
-            private boolean authenticated_;
+            private context.ContextOuterClass.OpticalLinkId opticalLinkUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLinkId.Builder, context.ContextOuterClass.OpticalLinkIdOrBuilder> opticalLinkUuidBuilder_;
 
             /**
-             * <code>bool authenticated = 2;</code>
-             * @return The authenticated.
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             * @return Whether the opticalLinkUuid field is set.
              */
-            @java.lang.Override
-            public boolean getAuthenticated() {
-                return authenticated_;
+            public boolean hasOpticalLinkUuid() {
+                return opticalLinkUuidBuilder_ != null || opticalLinkUuid_ != null;
             }
 
             /**
-             * <code>bool authenticated = 2;</code>
-             * @param value The authenticated to set.
-             * @return This builder for chaining.
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             * @return The opticalLinkUuid.
              */
-            public Builder setAuthenticated(boolean value) {
-                authenticated_ = value;
-                bitField0_ |= 0x00000002;
-                onChanged();
+            public context.ContextOuterClass.OpticalLinkId getOpticalLinkUuid() {
+                if (opticalLinkUuidBuilder_ == null) {
+                    return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_;
+                } else {
+                    return opticalLinkUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             */
+            public Builder setOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId value) {
+                if (opticalLinkUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    opticalLinkUuid_ = value;
+                    onChanged();
+                } else {
+                    opticalLinkUuidBuilder_.setMessage(value);
+                }
                 return this;
             }
 
             /**
-             * <code>bool authenticated = 2;</code>
-             * @return This builder for chaining.
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
              */
-            public Builder clearAuthenticated() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                authenticated_ = false;
-                onChanged();
+            public Builder setOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId.Builder builderForValue) {
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuid_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    opticalLinkUuidBuilder_.setMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             */
+            public Builder mergeOpticalLinkUuid(context.ContextOuterClass.OpticalLinkId value) {
+                if (opticalLinkUuidBuilder_ == null) {
+                    if (opticalLinkUuid_ != null) {
+                        opticalLinkUuid_ = context.ContextOuterClass.OpticalLinkId.newBuilder(opticalLinkUuid_).mergeFrom(value).buildPartial();
+                    } else {
+                        opticalLinkUuid_ = value;
+                    }
+                    onChanged();
+                } else {
+                    opticalLinkUuidBuilder_.mergeFrom(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             */
+            public Builder clearOpticalLinkUuid() {
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuid_ = null;
+                    onChanged();
+                } else {
+                    opticalLinkUuid_ = null;
+                    opticalLinkUuidBuilder_ = null;
+                }
                 return this;
             }
 
+            /**
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             */
+            public context.ContextOuterClass.OpticalLinkId.Builder getOpticalLinkUuidBuilder() {
+                onChanged();
+                return getOpticalLinkUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             */
+            public context.ContextOuterClass.OpticalLinkIdOrBuilder getOpticalLinkUuidOrBuilder() {
+                if (opticalLinkUuidBuilder_ != null) {
+                    return opticalLinkUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return opticalLinkUuid_ == null ? context.ContextOuterClass.OpticalLinkId.getDefaultInstance() : opticalLinkUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.OpticalLinkId optical_link_uuid = 3;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLinkId.Builder, context.ContextOuterClass.OpticalLinkIdOrBuilder> getOpticalLinkUuidFieldBuilder() {
+                if (opticalLinkUuidBuilder_ == null) {
+                    opticalLinkUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLinkId.Builder, context.ContextOuterClass.OpticalLinkIdOrBuilder>(getOpticalLinkUuid(), getParentForChildren(), isClean());
+                    opticalLinkUuid_ = null;
+                }
+                return opticalLinkUuidBuilder_;
+            }
+
             @java.lang.Override
             public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                 return super.setUnknownFields(unknownFields);
@@ -69248,49 +79359,39 @@ public final class ContextOuterClass {
             public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                 return super.mergeUnknownFields(unknownFields);
             }
-            // @@protoc_insertion_point(builder_scope:context.AuthenticationResult)
+            // @@protoc_insertion_point(builder_scope:context.OpticalLink)
         }
 
-        // @@protoc_insertion_point(class_scope:context.AuthenticationResult)
-        private static final context.ContextOuterClass.AuthenticationResult DEFAULT_INSTANCE;
+        // @@protoc_insertion_point(class_scope:context.OpticalLink)
+        private static final context.ContextOuterClass.OpticalLink DEFAULT_INSTANCE;
 
         static {
-            DEFAULT_INSTANCE = new context.ContextOuterClass.AuthenticationResult();
+            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLink();
         }
 
-        public static context.ContextOuterClass.AuthenticationResult getDefaultInstance() {
+        public static context.ContextOuterClass.OpticalLink getDefaultInstance() {
             return DEFAULT_INSTANCE;
         }
 
-        private static final com.google.protobuf.Parser<AuthenticationResult> PARSER = new com.google.protobuf.AbstractParser<AuthenticationResult>() {
+        private static final com.google.protobuf.Parser<OpticalLink> PARSER = new com.google.protobuf.AbstractParser<OpticalLink>() {
 
             @java.lang.Override
-            public AuthenticationResult parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+            public OpticalLink parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+                return new OpticalLink(input, extensionRegistry);
             }
         };
 
-        public static com.google.protobuf.Parser<AuthenticationResult> parser() {
+        public static com.google.protobuf.Parser<OpticalLink> parser() {
             return PARSER;
         }
 
         @java.lang.Override
-        public com.google.protobuf.Parser<AuthenticationResult> getParserForType() {
+        public com.google.protobuf.Parser<OpticalLink> getParserForType() {
             return PARSER;
         }
 
         @java.lang.Override
-        public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
+        public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() {
             return DEFAULT_INSTANCE;
         }
     }
@@ -69611,6 +79712,38 @@ public final class ContextOuterClass {
 
     private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_AuthenticationResult_fieldAccessorTable;
 
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalConfigId_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfigId_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalConfig_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfig_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalConfigList_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfigList_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkId_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkId_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_FiberId_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_FiberId_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Fiber_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Fiber_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_fieldAccessorTable;
+
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLink_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLink_fieldAccessorTable;
+
     public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
         return descriptor;
     }
@@ -69618,7 +79751,7 @@ public final class ContextOuterClass {
     private static com.google.protobuf.Descriptors.FileDescriptor descriptor;
 
     static {
-        java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" + "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" + "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" + "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" + ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" + ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" + "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" + "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" + "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" + "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" + "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" + "t.TeraFlowController\"8\n\rContextIdList\022\'\n" + "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" + "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" + "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" + "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" + "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" + "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" + "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" + "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" + "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." + "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" + "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" + "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" + "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" + "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" + "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" + "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" + "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" + "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" + "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" + "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" + ".Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" + "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" + "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" + "xt.DeviceConfig\022G\n\031device_operational_st" + "atus\030\005 \001(\0162$.context.DeviceOperationalSt" + "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" + "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" + "\007 \003(\0132\021.context.EndPoint\022&\n\ncomponents\030\010" + " \003(\0132\022.context.Component\022(\n\rcontroller_i" + "d\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tComponent" + "\022%\n\016component_uuid\030\001 \001(\0132\r.context.Uuid\022" + "\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattribute" + "s\030\004 \003(\0132\".context.Component.AttributesEn" + "try\022\016\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013" + "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014Device" + "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" + "onfigRule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030" + "\001 \003(\0132\021.context.DeviceId\".\n\nDeviceList\022 " + "\n\007devices\030\001 \003(\0132\017.context.Device\"\216\001\n\014Dev" + "iceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025.context." + "DeviceIdList\022\031\n\021include_endpoints\030\002 \001(\010\022" + "\034\n\024include_config_rules\030\003 \001(\010\022\032\n\022include" + "_components\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " + "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" + "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " + "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016Link" + "Attributes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022" + "\032\n\022used_capacity_gbps\030\002 \001(\002\"\223\001\n\004Link\022 \n\007" + "link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002" + " \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.contex" + "t.EndPointId\022+\n\nattributes\030\004 \001(\0132\027.conte" + "xt.LinkAttributes\"/\n\nLinkIdList\022!\n\010link_" + "ids\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034" + "\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEven" + "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link" + "_id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022" + "&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022" + "#\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n" + "\007Service\022&\n\nservice_id\030\001 \001(\0132\022.context.S" + "erviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003" + " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" + "e_endpoint_ids\030\004 \003(\0132\023.context.EndPointI" + "d\0220\n\023service_constraints\030\005 \003(\0132\023.context" + ".Constraint\022.\n\016service_status\030\006 \001(\0132\026.co" + "ntext.ServiceStatus\022.\n\016service_config\030\007 " + "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" + "\030\010 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" + "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" + "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" + "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" + "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" + "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" + "\030\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilt" + "er\022+\n\013service_ids\030\001 \001(\0132\026.context.Servic" + "eIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n" + "\023include_constraints\030\003 \001(\010\022\034\n\024include_co" + "nfig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005even" + "t\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 " + "\001(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\nco" + "ntext_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsl" + "ice_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022" + "\"\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004n" + "ame\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023." + "context.EndPointId\022.\n\021slice_constraints\030" + "\004 \003(\0132\023.context.Constraint\022-\n\021slice_serv" + "ice_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022sli" + "ce_subslice_ids\030\006 \003(\0132\020.context.SliceId\022" + "*\n\014slice_status\030\007 \001(\0132\024.context.SliceSta" + "tus\022*\n\014slice_config\030\010 \001(\0132\024.context.Slic" + "eConfig\022(\n\013slice_owner\030\t \001(\0132\023.context.S" + "liceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.T" + "imestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001" + "(\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"" + "=\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.c" + "ontext.SliceStatusEnum\"8\n\013SliceConfig\022)\n" + "\014config_rules\030\001 \003(\0132\023.context.ConfigRule" + "\"2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.con" + "text.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(" + "\0132\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tsli" + "ce_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024in" + "clude_endpoint_ids\030\002 \001(\010\022\033\n\023include_cons" + "traints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001" + "(\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024incl" + "ude_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005" + "event\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030" + "\002 \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022" + "&\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"" + "2\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic" + "_name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n" + "\017src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_addres" + "s\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004" + " \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic" + "_class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n" + "\016src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030" + "\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n" + "\003ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010s" + "rc_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_f" + "lags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSe" + "ttings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionS" + "ettings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connect" + "ionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Con" + "nectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context" + ".ConnectionSettings_L4\"\363\001\n\nConnection\022,\n" + "\rconnection_id\030\001 \001(\0132\025.context.Connectio" + "nId\022&\n\nservice_id\030\002 \001(\0132\022.context.Servic" + "eId\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.co" + "ntext.EndPointId\022+\n\017sub_service_ids\030\004 \003(" + "\0132\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132" + "\033.context.ConnectionSettings\"A\n\020Connecti" + "onIdList\022-\n\016connection_ids\030\001 \003(\0132\025.conte" + "xt.ConnectionId\":\n\016ConnectionList\022(\n\013con" + "nections\030\001 \003(\0132\023.context.Connection\"^\n\017C" + "onnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context." + "Event\022,\n\rconnection_id\030\002 \001(\0132\025.context.C" + "onnectionId\"\202\001\n\nEndPointId\022(\n\013topology_i" + "d\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_i" + "d\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_u" + "uid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020" + "kpi_sample_types\030\004 \003(\0162\037.kpi_sample_type" + "s.KpiSampleType\022,\n\021endpoint_location\030\005 \001" + "(\0132\021.context.Location\"{\n\014EndPointName\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 " + "\001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointId" + "List\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.End" + "PointId\"A\n\020EndPointNameList\022-\n\016endpoint_" + "names\030\001 \003(\0132\025.context.EndPointName\"A\n\021Co" + "nfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n" + "\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022" + "(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointI" + "d\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n" + "\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Co" + "nfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.context" + ".ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.cont" + "ext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021C" + "onstraint_Custom\022\027\n\017constraint_type\030\001 \001(" + "\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constrain" + "t_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rd" + "uration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010la" + "titude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locat" + "ion\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 " + "\001(\0132\025.context.GPS_PositionH\000B\n\n\010location" + "\"l\n\033Constraint_EndPointLocation\022(\n\013endpo" + "int_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loc" + "ation\030\002 \001(\0132\021.context.Location\"Y\n\033Constr" + "aint_EndPointPriority\022(\n\013endpoint_id\030\001 \001" + "(\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(" + "\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_laten" + "cy_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025" + "\n\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_" + "Availability\022\032\n\022num_disjoint_paths\030\001 \001(\r" + "\022\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001" + "(\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017" + "isolation_level\030\001 \003(\0162\033.context.Isolatio" + "nLevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014" + "is_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021" + ".context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132" + "\023.context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017" + ".context.LinkId\"\333\004\n\nConstraint\022-\n\006action" + "\030\001 \001(\0162\035.context.ConstraintActionEnum\022,\n" + "\006custom\030\002 \001(\0132\032.context.Constraint_Custo" + "mH\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrai" + "nt_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\013" + "2$.context.Constraint_EndPointLocationH\000" + "\022A\n\021endpoint_priority\030\005 \001(\0132$.context.Co" + "nstraint_EndPointPriorityH\000\0228\n\014sla_capac" + "ity\030\006 \001(\0132 .context.Constraint_SLA_Capac" + "ityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Con" + "straint_SLA_LatencyH\000\022@\n\020sla_availabilit" + "y\030\010 \001(\0132$.context.Constraint_SLA_Availab" + "ilityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context" + ".Constraint_SLA_Isolation_levelH\000\0224\n\nexc" + "lusions\030\n \001(\0132\036.context.Constraint_Exclu" + "sionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControl" + "ler\022&\n\ncontext_id\030\001 \001(\0132\022.context.Contex" + "tId\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n" + "\024AuthenticationResult\022&\n\ncontext_id\030\001 \001(" + "\0132\022.context.ContextId\022\025\n\rauthenticated\030\002" + " \001(\010*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UNDEF" + "INED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTTYP" + "E_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\321\002\n\020Dev" + "iceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINED\020" + "\000\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVICE" + "DRIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER_P" + "4\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOLOG" + "Y\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DEVI" + "CEDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2VPN" + "\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010\022\032\n\026" + "DEVICEDRIVER_FLEXSCALE\020\t\022\032\n\026DEVICEDRIVER" + "_IETF_ACTN\020\n*\217\001\n\033DeviceOperationalStatus" + "Enum\022%\n!DEVICEOPERATIONALSTATUS_UNDEFINE" + "D\020\000\022$\n DEVICEOPERATIONALSTATUS_DISABLED\020" + "\001\022#\n\037DEVICEOPERATIONALSTATUS_ENABLED\020\002*\252" + "\001\n\017ServiceTypeEnum\022\027\n\023SERVICETYPE_UNKNOW" + "N\020\000\022\024\n\020SERVICETYPE_L3NM\020\001\022\024\n\020SERVICETYPE" + "_L2NM\020\002\022)\n%SERVICETYPE_TAPI_CONNECTIVITY" + "_SERVICE\020\003\022\022\n\016SERVICETYPE_TE\020\004\022\023\n\017SERVIC" + "ETYPE_E2E\020\005*\304\001\n\021ServiceStatusEnum\022\033\n\027SER" + "VICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICESTATUS_" + "PLANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032\n\026S" + "ERVICESTATUS_UPDATING\020\003\022!\n\035SERVICESTATUS" + "_PENDING_REMOVAL\020\004\022\036\n\032SERVICESTATUS_SLA_" + "VIOLATED\020\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLICES" + "TATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_PLANNED" + "\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICESTATUS_" + "ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030SLIC" + "ESTATUS_SLA_VIOLATED\020\005*]\n\020ConfigActionEn" + "um\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020CONFIG" + "ACTION_SET\020\001\022\027\n\023CONFIGACTION_DELETE\020\002*m\n" + "\024ConstraintActionEnum\022\036\n\032CONSTRAINTACTIO" + "N_UNDEFINED\020\000\022\030\n\024CONSTRAINTACTION_SET\020\001\022" + "\033\n\027CONSTRAINTACTION_DELETE\020\002*\203\002\n\022Isolati" + "onLevelEnum\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYSICA" + "L_ISOLATION\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022\025\n\021" + "PROCESS_ISOLATION\020\003\022\035\n\031PHYSICAL_MEMORY_I" + "SOLATION\020\004\022\036\n\032PHYSICAL_NETWORK_ISOLATION" + "\020\005\022\036\n\032VIRTUAL_RESOURCE_ISOLATION\020\006\022\037\n\033NE" + "TWORK_FUNCTIONS_ISOLATION\020\007\022\025\n\021SERVICE_I" + "SOLATION\020\0102\245\026\n\016ContextService\022:\n\016ListCon" + "textIds\022\016.context.Empty\032\026.context.Contex" + "tIdList\"\000\0226\n\014ListContexts\022\016.context.Empt" + "y\032\024.context.ContextList\"\000\0224\n\nGetContext\022" + "\022.context.ContextId\032\020.context.Context\"\000\022" + "4\n\nSetContext\022\020.context.Context\032\022.contex" + "t.ContextId\"\000\0225\n\rRemoveContext\022\022.context" + ".ContextId\032\016.context.Empty\"\000\022=\n\020GetConte" + "xtEvents\022\016.context.Empty\032\025.context.Conte" + "xtEvent\"\0000\001\022@\n\017ListTopologyIds\022\022.context" + ".ContextId\032\027.context.TopologyIdList\"\000\022=\n" + "\016ListTopologies\022\022.context.ContextId\032\025.co" + "ntext.TopologyList\"\000\0227\n\013GetTopology\022\023.co" + "ntext.TopologyId\032\021.context.Topology\"\000\022E\n" + "\022GetTopologyDetails\022\023.context.TopologyId" + "\032\030.context.TopologyDetails\"\000\0227\n\013SetTopol" + "ogy\022\021.context.Topology\032\023.context.Topolog" + "yId\"\000\0227\n\016RemoveTopology\022\023.context.Topolo" + "gyId\032\016.context.Empty\"\000\022?\n\021GetTopologyEve" + "nts\022\016.context.Empty\032\026.context.TopologyEv" + "ent\"\0000\001\0228\n\rListDeviceIds\022\016.context.Empty" + "\032\025.context.DeviceIdList\"\000\0224\n\013ListDevices" + "\022\016.context.Empty\032\023.context.DeviceList\"\000\022" + "1\n\tGetDevice\022\021.context.DeviceId\032\017.contex" + "t.Device\"\000\0221\n\tSetDevice\022\017.context.Device" + "\032\021.context.DeviceId\"\000\0223\n\014RemoveDevice\022\021." + "context.DeviceId\032\016.context.Empty\"\000\022;\n\017Ge" + "tDeviceEvents\022\016.context.Empty\032\024.context." + "DeviceEvent\"\0000\001\022<\n\014SelectDevice\022\025.contex" + "t.DeviceFilter\032\023.context.DeviceList\"\000\022I\n" + "\021ListEndPointNames\022\027.context.EndPointIdL" + "ist\032\031.context.EndPointNameList\"\000\0224\n\013List" + "LinkIds\022\016.context.Empty\032\023.context.LinkId" + "List\"\000\0220\n\tListLinks\022\016.context.Empty\032\021.co" + "ntext.LinkList\"\000\022+\n\007GetLink\022\017.context.Li" + "nkId\032\r.context.Link\"\000\022+\n\007SetLink\022\r.conte" + "xt.Link\032\017.context.LinkId\"\000\022/\n\nRemoveLink" + "\022\017.context.LinkId\032\016.context.Empty\"\000\0227\n\rG" + "etLinkEvents\022\016.context.Empty\032\022.context.L" + "inkEvent\"\0000\001\022>\n\016ListServiceIds\022\022.context" + ".ContextId\032\026.context.ServiceIdList\"\000\022:\n\014" + "ListServices\022\022.context.ContextId\032\024.conte" + "xt.ServiceList\"\000\0224\n\nGetService\022\022.context" + ".ServiceId\032\020.context.Service\"\000\0224\n\nSetSer" + "vice\022\020.context.Service\032\022.context.Service" + "Id\"\000\0226\n\014UnsetService\022\020.context.Service\032\022" + ".context.ServiceId\"\000\0225\n\rRemoveService\022\022." + "context.ServiceId\032\016.context.Empty\"\000\022=\n\020G" + "etServiceEvents\022\016.context.Empty\032\025.contex" + "t.ServiceEvent\"\0000\001\022?\n\rSelectService\022\026.co" + "ntext.ServiceFilter\032\024.context.ServiceLis" + "t\"\000\022:\n\014ListSliceIds\022\022.context.ContextId\032" + "\024.context.SliceIdList\"\000\0226\n\nListSlices\022\022." + "context.ContextId\032\022.context.SliceList\"\000\022" + ".\n\010GetSlice\022\020.context.SliceId\032\016.context." + "Slice\"\000\022.\n\010SetSlice\022\016.context.Slice\032\020.co" + "ntext.SliceId\"\000\0220\n\nUnsetSlice\022\016.context." + "Slice\032\020.context.SliceId\"\000\0221\n\013RemoveSlice" + "\022\020.context.SliceId\032\016.context.Empty\"\000\0229\n\016" + "GetSliceEvents\022\016.context.Empty\032\023.context" + ".SliceEvent\"\0000\001\0229\n\013SelectSlice\022\024.context" + ".SliceFilter\032\022.context.SliceList\"\000\022D\n\021Li" + "stConnectionIds\022\022.context.ServiceId\032\031.co" + "ntext.ConnectionIdList\"\000\022@\n\017ListConnecti" + "ons\022\022.context.ServiceId\032\027.context.Connec" + "tionList\"\000\022=\n\rGetConnection\022\025.context.Co" + "nnectionId\032\023.context.Connection\"\000\022=\n\rSet" + "Connection\022\023.context.Connection\032\025.contex" + "t.ConnectionId\"\000\022;\n\020RemoveConnection\022\025.c" + "ontext.ConnectionId\032\016.context.Empty\"\000\022C\n" + "\023GetConnectionEvents\022\016.context.Empty\032\030.c" + "ontext.ConnectionEvent\"\0000\001b\006proto3" };
+        java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" + "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" + "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" + "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" + ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" + ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" + "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" + "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" + "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" + "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" + "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" + "t.TeraFlowController\"8\n\rContextIdList\022\'\n" + "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" + "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" + "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" + "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" + "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" + "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" + "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" + "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" + "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." + "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" + "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" + "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" + "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" + "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" + "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" + "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" + "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" + "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" + "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" + "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" + ".Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" + "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" + "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" + "xt.DeviceConfig\022G\n\031device_operational_st" + "atus\030\005 \001(\0162$.context.DeviceOperationalSt" + "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" + "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" + "\007 \003(\0132\021.context.EndPoint\022&\n\ncomponents\030\010" + " \003(\0132\022.context.Component\022(\n\rcontroller_i" + "d\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tComponent" + "\022%\n\016component_uuid\030\001 \001(\0132\r.context.Uuid\022" + "\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattribute" + "s\030\004 \003(\0132\".context.Component.AttributesEn" + "try\022\016\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013" + "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014Device" + "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" + "onfigRule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030" + "\001 \003(\0132\021.context.DeviceId\".\n\nDeviceList\022 " + "\n\007devices\030\001 \003(\0132\017.context.Device\"\216\001\n\014Dev" + "iceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025.context." + "DeviceIdList\022\031\n\021include_endpoints\030\002 \001(\010\022" + "\034\n\024include_config_rules\030\003 \001(\010\022\032\n\022include" + "_components\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " + "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" + "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " + "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016Link" + "Attributes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022" + "\032\n\022used_capacity_gbps\030\002 \001(\002\"\223\001\n\004Link\022 \n\007" + "link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002" + " \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.contex" + "t.EndPointId\022+\n\nattributes\030\004 \001(\0132\027.conte" + "xt.LinkAttributes\"/\n\nLinkIdList\022!\n\010link_" + "ids\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034" + "\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEven" + "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link" + "_id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022" + "&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022" + "#\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n" + "\007Service\022&\n\nservice_id\030\001 \001(\0132\022.context.S" + "erviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003" + " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" + "e_endpoint_ids\030\004 \003(\0132\023.context.EndPointI" + "d\0220\n\023service_constraints\030\005 \003(\0132\023.context" + ".Constraint\022.\n\016service_status\030\006 \001(\0132\026.co" + "ntext.ServiceStatus\022.\n\016service_config\030\007 " + "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" + "\030\010 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" + "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" + "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" + "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" + "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" + "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" + "\030\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilt" + "er\022+\n\013service_ids\030\001 \001(\0132\026.context.Servic" + "eIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n" + "\023include_constraints\030\003 \001(\010\022\034\n\024include_co" + "nfig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005even" + "t\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 " + "\001(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\nco" + "ntext_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsl" + "ice_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022" + "\"\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004n" + "ame\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023." + "context.EndPointId\022.\n\021slice_constraints\030" + "\004 \003(\0132\023.context.Constraint\022-\n\021slice_serv" + "ice_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022sli" + "ce_subslice_ids\030\006 \003(\0132\020.context.SliceId\022" + "*\n\014slice_status\030\007 \001(\0132\024.context.SliceSta" + "tus\022*\n\014slice_config\030\010 \001(\0132\024.context.Slic" + "eConfig\022(\n\013slice_owner\030\t \001(\0132\023.context.S" + "liceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.T" + "imestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001" + "(\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"" + "=\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.c" + "ontext.SliceStatusEnum\"8\n\013SliceConfig\022)\n" + "\014config_rules\030\001 \003(\0132\023.context.ConfigRule" + "\"2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.con" + "text.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(" + "\0132\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tsli" + "ce_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024in" + "clude_endpoint_ids\030\002 \001(\010\022\033\n\023include_cons" + "traints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001" + "(\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024incl" + "ude_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005" + "event\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030" + "\002 \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022" + "&\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"" + "2\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic" + "_name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n" + "\017src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_addres" + "s\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004" + " \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic" + "_class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n" + "\016src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030" + "\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n" + "\003ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010s" + "rc_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_f" + "lags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSe" + "ttings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionS" + "ettings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connect" + "ionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Con" + "nectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context" + ".ConnectionSettings_L4\"\363\001\n\nConnection\022,\n" + "\rconnection_id\030\001 \001(\0132\025.context.Connectio" + "nId\022&\n\nservice_id\030\002 \001(\0132\022.context.Servic" + "eId\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.co" + "ntext.EndPointId\022+\n\017sub_service_ids\030\004 \003(" + "\0132\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132" + "\033.context.ConnectionSettings\"A\n\020Connecti" + "onIdList\022-\n\016connection_ids\030\001 \003(\0132\025.conte" + "xt.ConnectionId\":\n\016ConnectionList\022(\n\013con" + "nections\030\001 \003(\0132\023.context.Connection\"^\n\017C" + "onnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context." + "Event\022,\n\rconnection_id\030\002 \001(\0132\025.context.C" + "onnectionId\"\202\001\n\nEndPointId\022(\n\013topology_i" + "d\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_i" + "d\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_u" + "uid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020" + "kpi_sample_types\030\004 \003(\0162\037.kpi_sample_type" + "s.KpiSampleType\022,\n\021endpoint_location\030\005 \001" + "(\0132\021.context.Location\"{\n\014EndPointName\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 " + "\001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointId" + "List\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.End" + "PointId\"A\n\020EndPointNameList\022-\n\016endpoint_" + "names\030\001 \003(\0132\025.context.EndPointName\"A\n\021Co" + "nfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n" + "\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022" + "(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointI" + "d\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n" + "\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Co" + "nfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.context" + ".ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.cont" + "ext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021C" + "onstraint_Custom\022\027\n\017constraint_type\030\001 \001(" + "\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constrain" + "t_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rd" + "uration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010la" + "titude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locat" + "ion\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 " + "\001(\0132\025.context.GPS_PositionH\000B\n\n\010location" + "\"l\n\033Constraint_EndPointLocation\022(\n\013endpo" + "int_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loc" + "ation\030\002 \001(\0132\021.context.Location\"Y\n\033Constr" + "aint_EndPointPriority\022(\n\013endpoint_id\030\001 \001" + "(\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(" + "\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_laten" + "cy_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025" + "\n\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_" + "Availability\022\032\n\022num_disjoint_paths\030\001 \001(\r" + "\022\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001" + "(\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017" + "isolation_level\030\001 \003(\0162\033.context.Isolatio" + "nLevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014" + "is_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021" + ".context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132" + "\023.context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017" + ".context.LinkId\"\333\004\n\nConstraint\022-\n\006action" + "\030\001 \001(\0162\035.context.ConstraintActionEnum\022,\n" + "\006custom\030\002 \001(\0132\032.context.Constraint_Custo" + "mH\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrai" + "nt_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\013" + "2$.context.Constraint_EndPointLocationH\000" + "\022A\n\021endpoint_priority\030\005 \001(\0132$.context.Co" + "nstraint_EndPointPriorityH\000\0228\n\014sla_capac" + "ity\030\006 \001(\0132 .context.Constraint_SLA_Capac" + "ityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Con" + "straint_SLA_LatencyH\000\022@\n\020sla_availabilit" + "y\030\010 \001(\0132$.context.Constraint_SLA_Availab" + "ilityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context" + ".Constraint_SLA_Isolation_levelH\000\0224\n\nexc" + "lusions\030\n \001(\0132\036.context.Constraint_Exclu" + "sionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControl" + "ler\022&\n\ncontext_id\030\001 \001(\0132\022.context.Contex" + "tId\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n" + "\024AuthenticationResult\022&\n\ncontext_id\030\001 \001(" + "\0132\022.context.ContextId\022\025\n\rauthenticated\030\002" + " \001(\010\"-\n\017OpticalConfigId\022\032\n\022opticalconfig" + "_uuid\030\001 \001(\t\"S\n\rOpticalConfig\0222\n\020opticalc" + "onfig_id\030\001 \001(\0132\030.context.OpticalConfigId" + "\022\016\n\006config\030\002 \001(\t\"C\n\021OpticalConfigList\022.\n" + "\016opticalconfigs\030\001 \003(\0132\026.context.OpticalC" + "onfig\"9\n\rOpticalLinkId\022(\n\021optical_link_u" + "uid\030\001 \001(\0132\r.context.Uuid\",\n\007FiberId\022!\n\nf" + "iber_uuid\030\001 \001(\0132\r.context.Uuid\"\341\001\n\005Fiber" + "\022\n\n\002ID\030\n \001(\t\022\020\n\010src_port\030\001 \001(\t\022\020\n\010dst_po" + "rt\030\002 \001(\t\022\027\n\017local_peer_port\030\003 \001(\t\022\030\n\020rem" + "ote_peer_port\030\004 \001(\t\022\017\n\007c_slots\030\005 \003(\005\022\017\n\007" + "l_slots\030\006 \003(\005\022\017\n\007s_slots\030\007 \003(\005\022\016\n\006length" + "\030\010 \001(\002\022\014\n\004used\030\t \001(\010\022$\n\nfiber_uuid\030\013 \001(\013" + "2\020.context.FiberId\"d\n\022OpticalLinkDetails" + "\022\016\n\006length\030\001 \001(\002\022\016\n\006source\030\002 \001(\t\022\016\n\006targ" + "et\030\003 \001(\t\022\036\n\006fibers\030\004 \003(\0132\016.context.Fiber" + "\"|\n\013OpticalLink\022\014\n\004name\030\001 \001(\t\022,\n\007details" + "\030\002 \001(\0132\033.context.OpticalLinkDetails\0221\n\021o" + "ptical_link_uuid\030\003 \001(\0132\026.context.Optical" + "LinkId*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UND" + "EFINED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTT" + "YPE_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\350\002\n\020D" + "eviceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINE" + "D\020\000\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVI" + "CEDRIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER" + "_P4\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOL" + "OGY\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DE" + "VICEDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2V" + "PN\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010\022\034" + "\n\030DEVICEDRIVER_OPTICAL_TFS\020\t\022\032\n\026DEVICEDR" + "IVER_IETF_ACTN\020\n\022\023\n\017DEVICEDRIVER_OC\020\013*\217\001" + "\n\033DeviceOperationalStatusEnum\022%\n!DEVICEO" + "PERATIONALSTATUS_UNDEFINED\020\000\022$\n DEVICEOP" + "ERATIONALSTATUS_DISABLED\020\001\022#\n\037DEVICEOPER" + "ATIONALSTATUS_ENABLED\020\002*\320\001\n\017ServiceTypeE" + "num\022\027\n\023SERVICETYPE_UNKNOWN\020\000\022\024\n\020SERVICET" + "YPE_L3NM\020\001\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERV" + "ICETYPE_TAPI_CONNECTIVITY_SERVICE\020\003\022\022\n\016S" + "ERVICETYPE_TE\020\004\022\023\n\017SERVICETYPE_E2E\020\005\022$\n " + "SERVICETYPE_OPTICAL_CONNECTIVITY\020\006*\304\001\n\021S" + "erviceStatusEnum\022\033\n\027SERVICESTATUS_UNDEFI" + "NED\020\000\022\031\n\025SERVICESTATUS_PLANNED\020\001\022\030\n\024SERV" + "ICESTATUS_ACTIVE\020\002\022\032\n\026SERVICESTATUS_UPDA" + "TING\020\003\022!\n\035SERVICESTATUS_PENDING_REMOVAL\020" + "\004\022\036\n\032SERVICESTATUS_SLA_VIOLATED\020\005*\251\001\n\017Sl" + "iceStatusEnum\022\031\n\025SLICESTATUS_UNDEFINED\020\000" + "\022\027\n\023SLICESTATUS_PLANNED\020\001\022\024\n\020SLICESTATUS" + "_INIT\020\002\022\026\n\022SLICESTATUS_ACTIVE\020\003\022\026\n\022SLICE" + "STATUS_DEINIT\020\004\022\034\n\030SLICESTATUS_SLA_VIOLA" + "TED\020\005*]\n\020ConfigActionEnum\022\032\n\026CONFIGACTIO" + "N_UNDEFINED\020\000\022\024\n\020CONFIGACTION_SET\020\001\022\027\n\023C" + "ONFIGACTION_DELETE\020\002*m\n\024ConstraintAction" + "Enum\022\036\n\032CONSTRAINTACTION_UNDEFINED\020\000\022\030\n\024" + "CONSTRAINTACTION_SET\020\001\022\033\n\027CONSTRAINTACTI" + "ON_DELETE\020\002*\203\002\n\022IsolationLevelEnum\022\020\n\014NO" + "_ISOLATION\020\000\022\026\n\022PHYSICAL_ISOLATION\020\001\022\025\n\021" + "LOGICAL_ISOLATION\020\002\022\025\n\021PROCESS_ISOLATION" + "\020\003\022\035\n\031PHYSICAL_MEMORY_ISOLATION\020\004\022\036\n\032PHY" + "SICAL_NETWORK_ISOLATION\020\005\022\036\n\032VIRTUAL_RES" + "OURCE_ISOLATION\020\006\022\037\n\033NETWORK_FUNCTIONS_I" + "SOLATION\020\007\022\025\n\021SERVICE_ISOLATION\020\0102\246\031\n\016Co" + "ntextService\022:\n\016ListContextIds\022\016.context" + ".Empty\032\026.context.ContextIdList\"\000\0226\n\014List" + "Contexts\022\016.context.Empty\032\024.context.Conte" + "xtList\"\000\0224\n\nGetContext\022\022.context.Context" + "Id\032\020.context.Context\"\000\0224\n\nSetContext\022\020.c" + "ontext.Context\032\022.context.ContextId\"\000\0225\n\r" + "RemoveContext\022\022.context.ContextId\032\016.cont" + "ext.Empty\"\000\022=\n\020GetContextEvents\022\016.contex" + "t.Empty\032\025.context.ContextEvent\"\0000\001\022@\n\017Li" + "stTopologyIds\022\022.context.ContextId\032\027.cont" + "ext.TopologyIdList\"\000\022=\n\016ListTopologies\022\022" + ".context.ContextId\032\025.context.TopologyLis" + "t\"\000\0227\n\013GetTopology\022\023.context.TopologyId\032" + "\021.context.Topology\"\000\022E\n\022GetTopologyDetai" + "ls\022\023.context.TopologyId\032\030.context.Topolo" + "gyDetails\"\000\0227\n\013SetTopology\022\021.context.Top" + "ology\032\023.context.TopologyId\"\000\0227\n\016RemoveTo" + "pology\022\023.context.TopologyId\032\016.context.Em" + "pty\"\000\022?\n\021GetTopologyEvents\022\016.context.Emp" + "ty\032\026.context.TopologyEvent\"\0000\001\0228\n\rListDe" + "viceIds\022\016.context.Empty\032\025.context.Device" + "IdList\"\000\0224\n\013ListDevices\022\016.context.Empty\032" + "\023.context.DeviceList\"\000\0221\n\tGetDevice\022\021.co" + "ntext.DeviceId\032\017.context.Device\"\000\0221\n\tSet" + "Device\022\017.context.Device\032\021.context.Device" + "Id\"\000\0223\n\014RemoveDevice\022\021.context.DeviceId\032" + "\016.context.Empty\"\000\022;\n\017GetDeviceEvents\022\016.c" + "ontext.Empty\032\024.context.DeviceEvent\"\0000\001\022<" + "\n\014SelectDevice\022\025.context.DeviceFilter\032\023." + "context.DeviceList\"\000\022I\n\021ListEndPointName" + "s\022\027.context.EndPointIdList\032\031.context.End" + "PointNameList\"\000\0224\n\013ListLinkIds\022\016.context" + ".Empty\032\023.context.LinkIdList\"\000\0220\n\tListLin" + "ks\022\016.context.Empty\032\021.context.LinkList\"\000\022" + "+\n\007GetLink\022\017.context.LinkId\032\r.context.Li" + "nk\"\000\022+\n\007SetLink\022\r.context.Link\032\017.context" + ".LinkId\"\000\022/\n\nRemoveLink\022\017.context.LinkId" + "\032\016.context.Empty\"\000\0227\n\rGetLinkEvents\022\016.co" + "ntext.Empty\032\022.context.LinkEvent\"\0000\001\022>\n\016L" + "istServiceIds\022\022.context.ContextId\032\026.cont" + "ext.ServiceIdList\"\000\022:\n\014ListServices\022\022.co" + "ntext.ContextId\032\024.context.ServiceList\"\000\022" + "4\n\nGetService\022\022.context.ServiceId\032\020.cont" + "ext.Service\"\000\0224\n\nSetService\022\020.context.Se" + "rvice\032\022.context.ServiceId\"\000\0226\n\014UnsetServ" + "ice\022\020.context.Service\032\022.context.ServiceI" + "d\"\000\0225\n\rRemoveService\022\022.context.ServiceId" + "\032\016.context.Empty\"\000\022=\n\020GetServiceEvents\022\016" + ".context.Empty\032\025.context.ServiceEvent\"\0000" + "\001\022?\n\rSelectService\022\026.context.ServiceFilt" + "er\032\024.context.ServiceList\"\000\022:\n\014ListSliceI" + "ds\022\022.context.ContextId\032\024.context.SliceId" + "List\"\000\0226\n\nListSlices\022\022.context.ContextId" + "\032\022.context.SliceList\"\000\022.\n\010GetSlice\022\020.con" + "text.SliceId\032\016.context.Slice\"\000\022.\n\010SetSli" + "ce\022\016.context.Slice\032\020.context.SliceId\"\000\0220" + "\n\nUnsetSlice\022\016.context.Slice\032\020.context.S" + "liceId\"\000\0221\n\013RemoveSlice\022\020.context.SliceI" + "d\032\016.context.Empty\"\000\0229\n\016GetSliceEvents\022\016." + "context.Empty\032\023.context.SliceEvent\"\0000\001\0229" + "\n\013SelectSlice\022\024.context.SliceFilter\032\022.co" + "ntext.SliceList\"\000\022D\n\021ListConnectionIds\022\022" + ".context.ServiceId\032\031.context.ConnectionI" + "dList\"\000\022@\n\017ListConnections\022\022.context.Ser" + "viceId\032\027.context.ConnectionList\"\000\022=\n\rGet" + "Connection\022\025.context.ConnectionId\032\023.cont" + "ext.Connection\"\000\022=\n\rSetConnection\022\023.cont" + "ext.Connection\032\025.context.ConnectionId\"\000\022" + ";\n\020RemoveConnection\022\025.context.Connection" + "Id\032\016.context.Empty\"\000\022C\n\023GetConnectionEve" + "nts\022\016.context.Empty\032\030.context.Connection" + "Event\"\0000\001\022@\n\020GetOpticalConfig\022\016.context." + "Empty\032\032.context.OpticalConfigList\"\000\022F\n\020S" + "etOpticalConfig\022\026.context.OpticalConfig\032" + "\030.context.OpticalConfigId\"\000\022I\n\023SelectOpt" + "icalConfig\022\030.context.OpticalConfigId\032\026.c" + "ontext.OpticalConfig\"\000\0228\n\016SetOpticalLink" + "\022\024.context.OpticalLink\032\016.context.Empty\"\000" + "\022@\n\016GetOpticalLink\022\026.context.OpticalLink" + "Id\032\024.context.OpticalLink\"\000\022.\n\010GetFiber\022\020" + ".context.FiberId\032\016.context.Fiber\"\000b\006prot" + "o3" };
         descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { acl.Acl.getDescriptor(), kpi_sample_types.KpiSampleTypes.getDescriptor() });
         internal_static_context_Empty_descriptor = getDescriptor().getMessageTypes().get(0);
         internal_static_context_Empty_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Empty_descriptor, new java.lang.String[] {});
@@ -69778,6 +79911,22 @@ public final class ContextOuterClass {
         internal_static_context_TeraFlowController_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TeraFlowController_descriptor, new java.lang.String[] { "ContextId", "IpAddress", "Port" });
         internal_static_context_AuthenticationResult_descriptor = getDescriptor().getMessageTypes().get(77);
         internal_static_context_AuthenticationResult_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_AuthenticationResult_descriptor, new java.lang.String[] { "ContextId", "Authenticated" });
+        internal_static_context_OpticalConfigId_descriptor = getDescriptor().getMessageTypes().get(78);
+        internal_static_context_OpticalConfigId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfigId_descriptor, new java.lang.String[] { "OpticalconfigUuid" });
+        internal_static_context_OpticalConfig_descriptor = getDescriptor().getMessageTypes().get(79);
+        internal_static_context_OpticalConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfig_descriptor, new java.lang.String[] { "OpticalconfigId", "Config" });
+        internal_static_context_OpticalConfigList_descriptor = getDescriptor().getMessageTypes().get(80);
+        internal_static_context_OpticalConfigList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfigList_descriptor, new java.lang.String[] { "Opticalconfigs" });
+        internal_static_context_OpticalLinkId_descriptor = getDescriptor().getMessageTypes().get(81);
+        internal_static_context_OpticalLinkId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkId_descriptor, new java.lang.String[] { "OpticalLinkUuid" });
+        internal_static_context_FiberId_descriptor = getDescriptor().getMessageTypes().get(82);
+        internal_static_context_FiberId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_FiberId_descriptor, new java.lang.String[] { "FiberUuid" });
+        internal_static_context_Fiber_descriptor = getDescriptor().getMessageTypes().get(83);
+        internal_static_context_Fiber_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Fiber_descriptor, new java.lang.String[] { "ID", "SrcPort", "DstPort", "LocalPeerPort", "RemotePeerPort", "CSlots", "LSlots", "SSlots", "Length", "Used", "FiberUuid" });
+        internal_static_context_OpticalLinkDetails_descriptor = getDescriptor().getMessageTypes().get(84);
+        internal_static_context_OpticalLinkDetails_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_descriptor, new java.lang.String[] { "Length", "Source", "Target", "Fibers" });
+        internal_static_context_OpticalLink_descriptor = getDescriptor().getMessageTypes().get(85);
+        internal_static_context_OpticalLink_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLink_descriptor, new java.lang.String[] { "Name", "Details", "OpticalLinkUuid" });
         acl.Acl.getDescriptor();
         kpi_sample_types.KpiSampleTypes.getDescriptor();
     }
diff --git a/src/ztp/target/generated-sources/grpc/context/ContextService.java b/src/ztp/target/generated-sources/grpc/context/ContextService.java
index f1c089fb564dbd0546b84ea19aa35f26ff331881..32544e6beba009b31b06dcd583893933c15eb1fe 100644
--- a/src/ztp/target/generated-sources/grpc/context/ContextService.java
+++ b/src/ztp/target/generated-sources/grpc/context/ContextService.java
@@ -89,6 +89,23 @@ public interface ContextService extends MutinyService {
 
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeConnection(context.ContextOuterClass.ConnectionId request);
 
+    /**
+     * <pre>
+     *  ------------------------------ Experimental -----------------------------
+     * </pre>
+     */
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigList> getOpticalConfig(context.ContextOuterClass.Empty request);
+
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigId> setOpticalConfig(context.ContextOuterClass.OpticalConfig request);
+
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfig> selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request);
+
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> setOpticalLink(context.ContextOuterClass.OpticalLink request);
+
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalLink> getOpticalLink(context.ContextOuterClass.OpticalLinkId request);
+
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.Fiber> getFiber(context.ContextOuterClass.FiberId request);
+
     io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request);
 
     io.smallrye.mutiny.Multi<context.ContextOuterClass.TopologyEvent> getTopologyEvents(context.ContextOuterClass.Empty request);
diff --git a/src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java b/src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java
index db1b9c1705820591966896bfbe353360304f58a0..d3c1b628573bf328f51de68a68d21690c2ff7045 100644
--- a/src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java
+++ b/src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java
@@ -391,6 +391,60 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI
         }
     }
 
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigList> getOpticalConfig(context.ContextOuterClass.Empty request) {
+        try {
+            return delegate.getOpticalConfig(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigId> setOpticalConfig(context.ContextOuterClass.OpticalConfig request) {
+        try {
+            return delegate.setOpticalConfig(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfig> selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) {
+        try {
+            return delegate.selectOpticalConfig(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> setOpticalLink(context.ContextOuterClass.OpticalLink request) {
+        try {
+            return delegate.setOpticalLink(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalLink> getOpticalLink(context.ContextOuterClass.OpticalLinkId request) {
+        try {
+            return delegate.getOpticalLink(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Fiber> getFiber(context.ContextOuterClass.FiberId request) {
+        try {
+            return delegate.getFiber(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+    }
+
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request) {
         try {
diff --git a/src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java b/src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java
index 88ab831f59f17e1e1ef197109a5917cda49dcc76..b1773578d3448de901839bf6e70e855ff58ad9e5 100644
--- a/src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java
+++ b/src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java
@@ -235,6 +235,36 @@ public class ContextServiceClient implements ContextService, MutinyClient<Mutiny
         return stub.removeConnection(request);
     }
 
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigList> getOpticalConfig(context.ContextOuterClass.Empty request) {
+        return stub.getOpticalConfig(request);
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigId> setOpticalConfig(context.ContextOuterClass.OpticalConfig request) {
+        return stub.setOpticalConfig(request);
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfig> selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) {
+        return stub.selectOpticalConfig(request);
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> setOpticalLink(context.ContextOuterClass.OpticalLink request) {
+        return stub.setOpticalLink(request);
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalLink> getOpticalLink(context.ContextOuterClass.OpticalLinkId request) {
+        return stub.getOpticalLink(request);
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<context.ContextOuterClass.Fiber> getFiber(context.ContextOuterClass.FiberId request) {
+        return stub.getFiber(request);
+    }
+
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request) {
         return stub.getContextEvents(request);
diff --git a/src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java b/src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java
index defb37810c2d84b4ba40fcc85e1e77def272d50d..a03f7e9491a695b715ef6bcadcf82150bdc3a231 100644
--- a/src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java
@@ -4,8 +4,7 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: context.proto")
-@io.grpc.stub.annotations.GrpcGenerated
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: context.proto")
 public final class ContextServiceGrpc {
 
     private ContextServiceGrpc() {
@@ -749,6 +748,96 @@ public final class ContextServiceGrpc {
         return getGetConnectionEventsMethod;
     }
 
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.OpticalConfigList> getGetOpticalConfigMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetOpticalConfig", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.OpticalConfigList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.OpticalConfigList> getGetOpticalConfigMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.OpticalConfigList> getGetOpticalConfigMethod;
+        if ((getGetOpticalConfigMethod = ContextServiceGrpc.getGetOpticalConfigMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetOpticalConfigMethod = ContextServiceGrpc.getGetOpticalConfigMethod) == null) {
+                    ContextServiceGrpc.getGetOpticalConfigMethod = getGetOpticalConfigMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.OpticalConfigList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetOpticalConfig")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfigList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetOpticalConfig")).build();
+                }
+            }
+        }
+        return getGetOpticalConfigMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfigId> getSetOpticalConfigMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetOpticalConfig", requestType = context.ContextOuterClass.OpticalConfig.class, responseType = context.ContextOuterClass.OpticalConfigId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfigId> getSetOpticalConfigMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfigId> getSetOpticalConfigMethod;
+        if ((getSetOpticalConfigMethod = ContextServiceGrpc.getSetOpticalConfigMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSetOpticalConfigMethod = ContextServiceGrpc.getSetOpticalConfigMethod) == null) {
+                    ContextServiceGrpc.getSetOpticalConfigMethod = getSetOpticalConfigMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfigId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetOpticalConfig")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfig.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfigId.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetOpticalConfig")).build();
+                }
+            }
+        }
+        return getSetOpticalConfigMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfig> getSelectOpticalConfigMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SelectOpticalConfig", requestType = context.ContextOuterClass.OpticalConfigId.class, responseType = context.ContextOuterClass.OpticalConfig.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfig> getSelectOpticalConfigMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfig> getSelectOpticalConfigMethod;
+        if ((getSelectOpticalConfigMethod = ContextServiceGrpc.getSelectOpticalConfigMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSelectOpticalConfigMethod = ContextServiceGrpc.getSelectOpticalConfigMethod) == null) {
+                    ContextServiceGrpc.getSelectOpticalConfigMethod = getSelectOpticalConfigMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfig>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SelectOpticalConfig")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfigId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalConfig.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SelectOpticalConfig")).build();
+                }
+            }
+        }
+        return getSelectOpticalConfigMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.Empty> getSetOpticalLinkMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetOpticalLink", requestType = context.ContextOuterClass.OpticalLink.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.Empty> getSetOpticalLinkMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.Empty> getSetOpticalLinkMethod;
+        if ((getSetOpticalLinkMethod = ContextServiceGrpc.getSetOpticalLinkMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSetOpticalLinkMethod = ContextServiceGrpc.getSetOpticalLinkMethod) == null) {
+                    ContextServiceGrpc.getSetOpticalLinkMethod = getSetOpticalLinkMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetOpticalLink")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLink.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetOpticalLink")).build();
+                }
+            }
+        }
+        return getSetOpticalLinkMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLink> getGetOpticalLinkMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetOpticalLink", requestType = context.ContextOuterClass.OpticalLinkId.class, responseType = context.ContextOuterClass.OpticalLink.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLink> getGetOpticalLinkMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLink> getGetOpticalLinkMethod;
+        if ((getGetOpticalLinkMethod = ContextServiceGrpc.getGetOpticalLinkMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetOpticalLinkMethod = ContextServiceGrpc.getGetOpticalLinkMethod) == null) {
+                    ContextServiceGrpc.getGetOpticalLinkMethod = getGetOpticalLinkMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLink>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetOpticalLink")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLinkId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.OpticalLink.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetOpticalLink")).build();
+                }
+            }
+        }
+        return getGetOpticalLinkMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.FiberId, context.ContextOuterClass.Fiber> getGetFiberMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetFiber", requestType = context.ContextOuterClass.FiberId.class, responseType = context.ContextOuterClass.Fiber.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.FiberId, context.ContextOuterClass.Fiber> getGetFiberMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.FiberId, context.ContextOuterClass.Fiber> getGetFiberMethod;
+        if ((getGetFiberMethod = ContextServiceGrpc.getGetFiberMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetFiberMethod = ContextServiceGrpc.getGetFiberMethod) == null) {
+                    ContextServiceGrpc.getGetFiberMethod = getGetFiberMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.FiberId, context.ContextOuterClass.Fiber>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetFiber")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.FiberId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Fiber.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetFiber")).build();
+                }
+            }
+        }
+        return getGetFiberMethod;
+    }
+
     /**
      * Creates a new async stub that supports all call types for the service
      */
@@ -793,316 +882,348 @@ public final class ContextServiceGrpc {
 
     /**
      */
-    public interface AsyncService {
+    public static abstract class ContextServiceImplBase implements io.grpc.BindableService {
 
         /**
          */
-        default void listContextIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextIdList> responseObserver) {
+        public void listContextIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListContextIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listContexts(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextList> responseObserver) {
+        public void listContexts(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListContextsMethod(), responseObserver);
         }
 
         /**
          */
-        default void getContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Context> responseObserver) {
+        public void getContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Context> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetContextMethod(), responseObserver);
         }
 
         /**
          */
-        default void setContext(context.ContextOuterClass.Context request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextId> responseObserver) {
+        public void setContext(context.ContextOuterClass.Context request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetContextMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveContextMethod(), responseObserver);
         }
 
         /**
          */
-        default void getContextEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextEvent> responseObserver) {
+        public void getContextEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetContextEventsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listTopologyIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyIdList> responseObserver) {
+        public void listTopologyIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListTopologyIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listTopologies(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyList> responseObserver) {
+        public void listTopologies(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListTopologiesMethod(), responseObserver);
         }
 
         /**
          */
-        default void getTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Topology> responseObserver) {
+        public void getTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Topology> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyMethod(), responseObserver);
         }
 
         /**
          */
-        default void getTopologyDetails(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails> responseObserver) {
+        public void getTopologyDetails(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyDetailsMethod(), responseObserver);
         }
 
         /**
          */
-        default void setTopology(context.ContextOuterClass.Topology request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId> responseObserver) {
+        public void setTopology(context.ContextOuterClass.Topology request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetTopologyMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveTopologyMethod(), responseObserver);
         }
 
         /**
          */
-        default void getTopologyEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyEvent> responseObserver) {
+        public void getTopologyEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyEventsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listDeviceIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceIdList> responseObserver) {
+        public void listDeviceIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListDeviceIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listDevices(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
+        public void listDevices(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListDevicesMethod(), responseObserver);
         }
 
         /**
          */
-        default void getDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Device> responseObserver) {
+        public void getDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Device> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void setDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
+        public void setDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void getDeviceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceEvent> responseObserver) {
+        public void getDeviceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDeviceEventsMethod(), responseObserver);
         }
 
         /**
          */
-        default void selectDevice(context.ContextOuterClass.DeviceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
+        public void selectDevice(context.ContextOuterClass.DeviceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void listEndPointNames(context.ContextOuterClass.EndPointIdList request, io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList> responseObserver) {
+        public void listEndPointNames(context.ContextOuterClass.EndPointIdList request, io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListEndPointNamesMethod(), responseObserver);
         }
 
         /**
          */
-        default void listLinkIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList> responseObserver) {
+        public void listLinkIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListLinkIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listLinks(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkList> responseObserver) {
+        public void listLinks(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListLinksMethod(), responseObserver);
         }
 
         /**
          */
-        default void getLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Link> responseObserver) {
+        public void getLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Link> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetLinkMethod(), responseObserver);
         }
 
         /**
          */
-        default void setLink(context.ContextOuterClass.Link request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkId> responseObserver) {
+        public void setLink(context.ContextOuterClass.Link request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetLinkMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveLinkMethod(), responseObserver);
         }
 
         /**
          */
-        default void getLinkEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkEvent> responseObserver) {
+        public void getLinkEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetLinkEventsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listServiceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceIdList> responseObserver) {
+        public void listServiceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListServiceIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listServices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
+        public void listServices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListServicesMethod(), responseObserver);
         }
 
         /**
          */
-        default void getService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Service> responseObserver) {
+        public void getService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Service> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void setService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
+        public void setService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void unsetService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
+        public void unsetService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void getServiceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceEvent> responseObserver) {
+        public void getServiceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetServiceEventsMethod(), responseObserver);
         }
 
         /**
          */
-        default void selectService(context.ContextOuterClass.ServiceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
+        public void selectService(context.ContextOuterClass.ServiceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectServiceMethod(), responseObserver);
         }
 
         /**
          */
-        default void listSliceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList> responseObserver) {
+        public void listSliceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListSliceIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listSlices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
+        public void listSlices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListSlicesMethod(), responseObserver);
         }
 
         /**
          */
-        default void getSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Slice> responseObserver) {
+        public void getSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Slice> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSliceMethod(), responseObserver);
         }
 
         /**
          */
-        default void setSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
+        public void setSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetSliceMethod(), responseObserver);
         }
 
         /**
          */
-        default void unsetSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
+        public void unsetSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetSliceMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveSliceMethod(), responseObserver);
         }
 
         /**
          */
-        default void getSliceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceEvent> responseObserver) {
+        public void getSliceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSliceEventsMethod(), responseObserver);
         }
 
         /**
          */
-        default void selectSlice(context.ContextOuterClass.SliceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
+        public void selectSlice(context.ContextOuterClass.SliceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectSliceMethod(), responseObserver);
         }
 
         /**
          */
-        default void listConnectionIds(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList> responseObserver) {
+        public void listConnectionIds(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListConnectionIdsMethod(), responseObserver);
         }
 
         /**
          */
-        default void listConnections(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionList> responseObserver) {
+        public void listConnections(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListConnectionsMethod(), responseObserver);
         }
 
         /**
          */
-        default void getConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Connection> responseObserver) {
+        public void getConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Connection> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetConnectionMethod(), responseObserver);
         }
 
         /**
          */
-        default void setConnection(context.ContextOuterClass.Connection request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionId> responseObserver) {
+        public void setConnection(context.ContextOuterClass.Connection request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetConnectionMethod(), responseObserver);
         }
 
         /**
          */
-        default void removeConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void removeConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveConnectionMethod(), responseObserver);
         }
 
         /**
          */
-        default void getConnectionEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent> responseObserver) {
+        public void getConnectionEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetConnectionEventsMethod(), responseObserver);
         }
-    }
 
-    /**
-     * Base class for the server implementation of the service ContextService.
-     */
-    public static abstract class ContextServiceImplBase implements io.grpc.BindableService, AsyncService {
+        /**
+         * <pre>
+         * ------------------------------ Experimental -----------------------------
+         * </pre>
+         */
+        public void getOpticalConfig(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetOpticalConfigMethod(), responseObserver);
+        }
+
+        /**
+         */
+        public void setOpticalConfig(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetOpticalConfigMethod(), responseObserver);
+        }
+
+        /**
+         */
+        public void selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfig> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectOpticalConfigMethod(), responseObserver);
+        }
+
+        /**
+         */
+        public void setOpticalLink(context.ContextOuterClass.OpticalLink request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetOpticalLinkMethod(), responseObserver);
+        }
+
+        /**
+         */
+        public void getOpticalLink(context.ContextOuterClass.OpticalLinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalLink> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetOpticalLinkMethod(), responseObserver);
+        }
+
+        /**
+         */
+        public void getFiber(context.ContextOuterClass.FiberId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Fiber> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetFiberMethod(), responseObserver);
+        }
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return ContextServiceGrpc.bindService(this);
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListContextIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList>(this, METHODID_LIST_CONTEXT_IDS))).addMethod(getListContextsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList>(this, METHODID_LIST_CONTEXTS))).addMethod(getGetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context>(this, METHODID_GET_CONTEXT))).addMethod(getSetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId>(this, METHODID_SET_CONTEXT))).addMethod(getRemoveContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONTEXT))).addMethod(getGetContextEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent>(this, METHODID_GET_CONTEXT_EVENTS))).addMethod(getListTopologyIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList>(this, METHODID_LIST_TOPOLOGY_IDS))).addMethod(getListTopologiesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList>(this, METHODID_LIST_TOPOLOGIES))).addMethod(getGetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology>(this, METHODID_GET_TOPOLOGY))).addMethod(getGetTopologyDetailsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails>(this, METHODID_GET_TOPOLOGY_DETAILS))).addMethod(getSetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId>(this, METHODID_SET_TOPOLOGY))).addMethod(getRemoveTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_TOPOLOGY))).addMethod(getGetTopologyEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent>(this, METHODID_GET_TOPOLOGY_EVENTS))).addMethod(getListDeviceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList>(this, METHODID_LIST_DEVICE_IDS))).addMethod(getListDevicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList>(this, METHODID_LIST_DEVICES))).addMethod(getGetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device>(this, METHODID_GET_DEVICE))).addMethod(getSetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(this, METHODID_SET_DEVICE))).addMethod(getRemoveDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_DEVICE))).addMethod(getGetDeviceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent>(this, METHODID_GET_DEVICE_EVENTS))).addMethod(getSelectDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList>(this, METHODID_SELECT_DEVICE))).addMethod(getListEndPointNamesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList>(this, METHODID_LIST_END_POINT_NAMES))).addMethod(getListLinkIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList>(this, METHODID_LIST_LINK_IDS))).addMethod(getListLinksMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList>(this, METHODID_LIST_LINKS))).addMethod(getGetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link>(this, METHODID_GET_LINK))).addMethod(getSetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId>(this, METHODID_SET_LINK))).addMethod(getRemoveLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_LINK))).addMethod(getGetLinkEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent>(this, METHODID_GET_LINK_EVENTS))).addMethod(getListServiceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList>(this, METHODID_LIST_SERVICE_IDS))).addMethod(getListServicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList>(this, METHODID_LIST_SERVICES))).addMethod(getGetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service>(this, METHODID_GET_SERVICE))).addMethod(getSetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_SET_SERVICE))).addMethod(getUnsetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_UNSET_SERVICE))).addMethod(getRemoveServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SERVICE))).addMethod(getGetServiceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent>(this, METHODID_GET_SERVICE_EVENTS))).addMethod(getSelectServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList>(this, METHODID_SELECT_SERVICE))).addMethod(getListSliceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList>(this, METHODID_LIST_SLICE_IDS))).addMethod(getListSlicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList>(this, METHODID_LIST_SLICES))).addMethod(getGetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice>(this, METHODID_GET_SLICE))).addMethod(getSetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_SET_SLICE))).addMethod(getUnsetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_UNSET_SLICE))).addMethod(getRemoveSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SLICE))).addMethod(getGetSliceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent>(this, METHODID_GET_SLICE_EVENTS))).addMethod(getSelectSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList>(this, METHODID_SELECT_SLICE))).addMethod(getListConnectionIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList>(this, METHODID_LIST_CONNECTION_IDS))).addMethod(getListConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList>(this, METHODID_LIST_CONNECTIONS))).addMethod(getGetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection>(this, METHODID_GET_CONNECTION))).addMethod(getSetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId>(this, METHODID_SET_CONNECTION))).addMethod(getRemoveConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONNECTION))).addMethod(getGetConnectionEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent>(this, METHODID_GET_CONNECTION_EVENTS))).addMethod(getGetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.OpticalConfigList>(this, METHODID_GET_OPTICAL_CONFIG))).addMethod(getSetOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfigId>(this, METHODID_SET_OPTICAL_CONFIG))).addMethod(getSelectOpticalConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfig>(this, METHODID_SELECT_OPTICAL_CONFIG))).addMethod(getSetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.Empty>(this, METHODID_SET_OPTICAL_LINK))).addMethod(getGetOpticalLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLink>(this, METHODID_GET_OPTICAL_LINK))).addMethod(getGetFiberMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.FiberId, context.ContextOuterClass.Fiber>(this, METHODID_GET_FIBER))).build();
         }
     }
 
     /**
-     * A stub to allow clients to do asynchronous rpc calls to service ContextService.
      */
     public static class ContextServiceStub extends io.grpc.stub.AbstractAsyncStub<ContextServiceStub> {
 
@@ -1408,10 +1529,48 @@ public final class ContextServiceGrpc {
         public void getConnectionEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent> responseObserver) {
             io.grpc.stub.ClientCalls.asyncServerStreamingCall(getChannel().newCall(getGetConnectionEventsMethod(), getCallOptions()), request, responseObserver);
         }
+
+        /**
+         * <pre>
+         * ------------------------------ Experimental -----------------------------
+         * </pre>
+         */
+        public void getOpticalConfig(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetOpticalConfigMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void setOpticalConfig(context.ContextOuterClass.OpticalConfig request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetOpticalConfigMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfig> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSelectOpticalConfigMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void setOpticalLink(context.ContextOuterClass.OpticalLink request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetOpticalLinkMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void getOpticalLink(context.ContextOuterClass.OpticalLinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalLink> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetOpticalLinkMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void getFiber(context.ContextOuterClass.FiberId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Fiber> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetFiberMethod(), getCallOptions()), request, responseObserver);
+        }
     }
 
     /**
-     * A stub to allow clients to do synchronous rpc calls to service ContextService.
      */
     public static class ContextServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<ContextServiceBlockingStub> {
 
@@ -1717,10 +1876,48 @@ public final class ContextServiceGrpc {
         public java.util.Iterator<context.ContextOuterClass.ConnectionEvent> getConnectionEvents(context.ContextOuterClass.Empty request) {
             return io.grpc.stub.ClientCalls.blockingServerStreamingCall(getChannel(), getGetConnectionEventsMethod(), getCallOptions(), request);
         }
+
+        /**
+         * <pre>
+         * ------------------------------ Experimental -----------------------------
+         * </pre>
+         */
+        public context.ContextOuterClass.OpticalConfigList getOpticalConfig(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetOpticalConfigMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.OpticalConfigId setOpticalConfig(context.ContextOuterClass.OpticalConfig request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetOpticalConfigMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.OpticalConfig selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSelectOpticalConfigMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Empty setOpticalLink(context.ContextOuterClass.OpticalLink request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetOpticalLinkMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.OpticalLink getOpticalLink(context.ContextOuterClass.OpticalLinkId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetOpticalLinkMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Fiber getFiber(context.ContextOuterClass.FiberId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetFiberMethod(), getCallOptions(), request);
+        }
     }
 
     /**
-     * A stub to allow clients to do ListenableFuture-style rpc calls to service ContextService.
      */
     public static class ContextServiceFutureStub extends io.grpc.stub.AbstractFutureStub<ContextServiceFutureStub> {
 
@@ -1984,6 +2181,45 @@ public final class ContextServiceGrpc {
         public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeConnection(context.ContextOuterClass.ConnectionId request) {
             return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getRemoveConnectionMethod(), getCallOptions()), request);
         }
+
+        /**
+         * <pre>
+         * ------------------------------ Experimental -----------------------------
+         * </pre>
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.OpticalConfigList> getOpticalConfig(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetOpticalConfigMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.OpticalConfigId> setOpticalConfig(context.ContextOuterClass.OpticalConfig request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetOpticalConfigMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.OpticalConfig> selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSelectOpticalConfigMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> setOpticalLink(context.ContextOuterClass.OpticalLink request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetOpticalLinkMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.OpticalLink> getOpticalLink(context.ContextOuterClass.OpticalLinkId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetOpticalLinkMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Fiber> getFiber(context.ContextOuterClass.FiberId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetFiberMethod(), getCallOptions()), request);
+        }
     }
 
     private static final int METHODID_LIST_CONTEXT_IDS = 0;
@@ -2084,13 +2320,25 @@ public final class ContextServiceGrpc {
 
     private static final int METHODID_GET_CONNECTION_EVENTS = 48;
 
+    private static final int METHODID_GET_OPTICAL_CONFIG = 49;
+
+    private static final int METHODID_SET_OPTICAL_CONFIG = 50;
+
+    private static final int METHODID_SELECT_OPTICAL_CONFIG = 51;
+
+    private static final int METHODID_SET_OPTICAL_LINK = 52;
+
+    private static final int METHODID_GET_OPTICAL_LINK = 53;
+
+    private static final int METHODID_GET_FIBER = 54;
+
     private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
 
-        private final AsyncService serviceImpl;
+        private final ContextServiceImplBase serviceImpl;
 
         private final int methodId;
 
-        MethodHandlers(AsyncService serviceImpl, int methodId) {
+        MethodHandlers(ContextServiceImplBase serviceImpl, int methodId) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
         }
@@ -2246,6 +2494,24 @@ public final class ContextServiceGrpc {
                 case METHODID_GET_CONNECTION_EVENTS:
                     serviceImpl.getConnectionEvents((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent>) responseObserver);
                     break;
+                case METHODID_GET_OPTICAL_CONFIG:
+                    serviceImpl.getOpticalConfig((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigList>) responseObserver);
+                    break;
+                case METHODID_SET_OPTICAL_CONFIG:
+                    serviceImpl.setOpticalConfig((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigId>) responseObserver);
+                    break;
+                case METHODID_SELECT_OPTICAL_CONFIG:
+                    serviceImpl.selectOpticalConfig((context.ContextOuterClass.OpticalConfigId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfig>) responseObserver);
+                    break;
+                case METHODID_SET_OPTICAL_LINK:
+                    serviceImpl.setOpticalLink((context.ContextOuterClass.OpticalLink) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_GET_OPTICAL_LINK:
+                    serviceImpl.getOpticalLink((context.ContextOuterClass.OpticalLinkId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalLink>) responseObserver);
+                    break;
+                case METHODID_GET_FIBER:
+                    serviceImpl.getFiber((context.ContextOuterClass.FiberId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Fiber>) responseObserver);
+                    break;
                 default:
                     throw new AssertionError();
             }
@@ -2261,10 +2527,6 @@ public final class ContextServiceGrpc {
         }
     }
 
-    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
-        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListContextIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList>(service, METHODID_LIST_CONTEXT_IDS))).addMethod(getListContextsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList>(service, METHODID_LIST_CONTEXTS))).addMethod(getGetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context>(service, METHODID_GET_CONTEXT))).addMethod(getSetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId>(service, METHODID_SET_CONTEXT))).addMethod(getRemoveContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_CONTEXT))).addMethod(getGetContextEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent>(service, METHODID_GET_CONTEXT_EVENTS))).addMethod(getListTopologyIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList>(service, METHODID_LIST_TOPOLOGY_IDS))).addMethod(getListTopologiesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList>(service, METHODID_LIST_TOPOLOGIES))).addMethod(getGetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology>(service, METHODID_GET_TOPOLOGY))).addMethod(getGetTopologyDetailsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails>(service, METHODID_GET_TOPOLOGY_DETAILS))).addMethod(getSetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId>(service, METHODID_SET_TOPOLOGY))).addMethod(getRemoveTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_TOPOLOGY))).addMethod(getGetTopologyEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent>(service, METHODID_GET_TOPOLOGY_EVENTS))).addMethod(getListDeviceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList>(service, METHODID_LIST_DEVICE_IDS))).addMethod(getListDevicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList>(service, METHODID_LIST_DEVICES))).addMethod(getGetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device>(service, METHODID_GET_DEVICE))).addMethod(getSetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(service, METHODID_SET_DEVICE))).addMethod(getRemoveDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_DEVICE))).addMethod(getGetDeviceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent>(service, METHODID_GET_DEVICE_EVENTS))).addMethod(getSelectDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList>(service, METHODID_SELECT_DEVICE))).addMethod(getListEndPointNamesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList>(service, METHODID_LIST_END_POINT_NAMES))).addMethod(getListLinkIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList>(service, METHODID_LIST_LINK_IDS))).addMethod(getListLinksMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList>(service, METHODID_LIST_LINKS))).addMethod(getGetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link>(service, METHODID_GET_LINK))).addMethod(getSetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId>(service, METHODID_SET_LINK))).addMethod(getRemoveLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_LINK))).addMethod(getGetLinkEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent>(service, METHODID_GET_LINK_EVENTS))).addMethod(getListServiceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList>(service, METHODID_LIST_SERVICE_IDS))).addMethod(getListServicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList>(service, METHODID_LIST_SERVICES))).addMethod(getGetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service>(service, METHODID_GET_SERVICE))).addMethod(getSetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(service, METHODID_SET_SERVICE))).addMethod(getUnsetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(service, METHODID_UNSET_SERVICE))).addMethod(getRemoveServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_SERVICE))).addMethod(getGetServiceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent>(service, METHODID_GET_SERVICE_EVENTS))).addMethod(getSelectServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList>(service, METHODID_SELECT_SERVICE))).addMethod(getListSliceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList>(service, METHODID_LIST_SLICE_IDS))).addMethod(getListSlicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList>(service, METHODID_LIST_SLICES))).addMethod(getGetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice>(service, METHODID_GET_SLICE))).addMethod(getSetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(service, METHODID_SET_SLICE))).addMethod(getUnsetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(service, METHODID_UNSET_SLICE))).addMethod(getRemoveSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_SLICE))).addMethod(getGetSliceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent>(service, METHODID_GET_SLICE_EVENTS))).addMethod(getSelectSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList>(service, METHODID_SELECT_SLICE))).addMethod(getListConnectionIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList>(service, METHODID_LIST_CONNECTION_IDS))).addMethod(getListConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList>(service, METHODID_LIST_CONNECTIONS))).addMethod(getGetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection>(service, METHODID_GET_CONNECTION))).addMethod(getSetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId>(service, METHODID_SET_CONNECTION))).addMethod(getRemoveConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_CONNECTION))).addMethod(getGetConnectionEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent>(service, METHODID_GET_CONNECTION_EVENTS))).build();
-    }
-
     private static abstract class ContextServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
         ContextServiceBaseDescriptorSupplier() {
@@ -2309,7 +2571,7 @@ public final class ContextServiceGrpc {
             synchronized (ContextServiceGrpc.class) {
                 result = serviceDescriptor;
                 if (result == null) {
-                    serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME).setSchemaDescriptor(new ContextServiceFileDescriptorSupplier()).addMethod(getListContextIdsMethod()).addMethod(getListContextsMethod()).addMethod(getGetContextMethod()).addMethod(getSetContextMethod()).addMethod(getRemoveContextMethod()).addMethod(getGetContextEventsMethod()).addMethod(getListTopologyIdsMethod()).addMethod(getListTopologiesMethod()).addMethod(getGetTopologyMethod()).addMethod(getGetTopologyDetailsMethod()).addMethod(getSetTopologyMethod()).addMethod(getRemoveTopologyMethod()).addMethod(getGetTopologyEventsMethod()).addMethod(getListDeviceIdsMethod()).addMethod(getListDevicesMethod()).addMethod(getGetDeviceMethod()).addMethod(getSetDeviceMethod()).addMethod(getRemoveDeviceMethod()).addMethod(getGetDeviceEventsMethod()).addMethod(getSelectDeviceMethod()).addMethod(getListEndPointNamesMethod()).addMethod(getListLinkIdsMethod()).addMethod(getListLinksMethod()).addMethod(getGetLinkMethod()).addMethod(getSetLinkMethod()).addMethod(getRemoveLinkMethod()).addMethod(getGetLinkEventsMethod()).addMethod(getListServiceIdsMethod()).addMethod(getListServicesMethod()).addMethod(getGetServiceMethod()).addMethod(getSetServiceMethod()).addMethod(getUnsetServiceMethod()).addMethod(getRemoveServiceMethod()).addMethod(getGetServiceEventsMethod()).addMethod(getSelectServiceMethod()).addMethod(getListSliceIdsMethod()).addMethod(getListSlicesMethod()).addMethod(getGetSliceMethod()).addMethod(getSetSliceMethod()).addMethod(getUnsetSliceMethod()).addMethod(getRemoveSliceMethod()).addMethod(getGetSliceEventsMethod()).addMethod(getSelectSliceMethod()).addMethod(getListConnectionIdsMethod()).addMethod(getListConnectionsMethod()).addMethod(getGetConnectionMethod()).addMethod(getSetConnectionMethod()).addMethod(getRemoveConnectionMethod()).addMethod(getGetConnectionEventsMethod()).build();
+                    serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME).setSchemaDescriptor(new ContextServiceFileDescriptorSupplier()).addMethod(getListContextIdsMethod()).addMethod(getListContextsMethod()).addMethod(getGetContextMethod()).addMethod(getSetContextMethod()).addMethod(getRemoveContextMethod()).addMethod(getGetContextEventsMethod()).addMethod(getListTopologyIdsMethod()).addMethod(getListTopologiesMethod()).addMethod(getGetTopologyMethod()).addMethod(getGetTopologyDetailsMethod()).addMethod(getSetTopologyMethod()).addMethod(getRemoveTopologyMethod()).addMethod(getGetTopologyEventsMethod()).addMethod(getListDeviceIdsMethod()).addMethod(getListDevicesMethod()).addMethod(getGetDeviceMethod()).addMethod(getSetDeviceMethod()).addMethod(getRemoveDeviceMethod()).addMethod(getGetDeviceEventsMethod()).addMethod(getSelectDeviceMethod()).addMethod(getListEndPointNamesMethod()).addMethod(getListLinkIdsMethod()).addMethod(getListLinksMethod()).addMethod(getGetLinkMethod()).addMethod(getSetLinkMethod()).addMethod(getRemoveLinkMethod()).addMethod(getGetLinkEventsMethod()).addMethod(getListServiceIdsMethod()).addMethod(getListServicesMethod()).addMethod(getGetServiceMethod()).addMethod(getSetServiceMethod()).addMethod(getUnsetServiceMethod()).addMethod(getRemoveServiceMethod()).addMethod(getGetServiceEventsMethod()).addMethod(getSelectServiceMethod()).addMethod(getListSliceIdsMethod()).addMethod(getListSlicesMethod()).addMethod(getGetSliceMethod()).addMethod(getSetSliceMethod()).addMethod(getUnsetSliceMethod()).addMethod(getRemoveSliceMethod()).addMethod(getGetSliceEventsMethod()).addMethod(getSelectSliceMethod()).addMethod(getListConnectionIdsMethod()).addMethod(getListConnectionsMethod()).addMethod(getGetConnectionMethod()).addMethod(getSetConnectionMethod()).addMethod(getRemoveConnectionMethod()).addMethod(getGetConnectionEventsMethod()).addMethod(getGetOpticalConfigMethod()).addMethod(getSetOpticalConfigMethod()).addMethod(getSelectOpticalConfigMethod()).addMethod(getSetOpticalLinkMethod()).addMethod(getGetOpticalLinkMethod()).addMethod(getGetFiberMethod()).build();
                 }
             }
         }
diff --git a/src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java b/src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
index 247bf18aeacccd7e85733d56585722094b019915..c6dbb1e92554dea8ee8d25b01bf87dd2cfa32551 100644
--- a/src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
@@ -203,6 +203,35 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp
             return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::removeConnection);
         }
 
+        /**
+         * <pre>
+         *  ------------------------------ Experimental -----------------------------
+         * </pre>
+         */
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigList> getOpticalConfig(context.ContextOuterClass.Empty request) {
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getOpticalConfig);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigId> setOpticalConfig(context.ContextOuterClass.OpticalConfig request) {
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setOpticalConfig);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfig> selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) {
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::selectOpticalConfig);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> setOpticalLink(context.ContextOuterClass.OpticalLink request) {
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setOpticalLink);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalLink> getOpticalLink(context.ContextOuterClass.OpticalLinkId request) {
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getOpticalLink);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Fiber> getFiber(context.ContextOuterClass.FiberId request) {
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getFiber);
+        }
+
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request) {
             return io.quarkus.grpc.stubs.ClientCalls.oneToMany(request, delegateStub::getContextEvents);
         }
@@ -414,6 +443,35 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
+        /**
+         * <pre>
+         *  ------------------------------ Experimental -----------------------------
+         * </pre>
+         */
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigList> getOpticalConfig(context.ContextOuterClass.Empty request) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfigId> setOpticalConfig(context.ContextOuterClass.OpticalConfig request) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalConfig> selectOpticalConfig(context.ContextOuterClass.OpticalConfigId request) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> setOpticalLink(context.ContextOuterClass.OpticalLink request) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.OpticalLink> getOpticalLink(context.ContextOuterClass.OpticalLinkId request) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+
+        public io.smallrye.mutiny.Uni<context.ContextOuterClass.Fiber> getFiber(context.ContextOuterClass.FiberId request) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
+
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
@@ -444,7 +502,7 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(context.ContextServiceGrpc.getListContextIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList>(this, METHODID_LIST_CONTEXT_IDS, compression))).addMethod(context.ContextServiceGrpc.getListContextsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList>(this, METHODID_LIST_CONTEXTS, compression))).addMethod(context.ContextServiceGrpc.getGetContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context>(this, METHODID_GET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getSetContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId>(this, METHODID_SET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getRemoveContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getGetContextEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent>(this, METHODID_GET_CONTEXT_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListTopologyIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList>(this, METHODID_LIST_TOPOLOGY_IDS, compression))).addMethod(context.ContextServiceGrpc.getListTopologiesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList>(this, METHODID_LIST_TOPOLOGIES, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology>(this, METHODID_GET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyDetailsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails>(this, METHODID_GET_TOPOLOGY_DETAILS, compression))).addMethod(context.ContextServiceGrpc.getSetTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId>(this, METHODID_SET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getRemoveTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent>(this, METHODID_GET_TOPOLOGY_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListDeviceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList>(this, METHODID_LIST_DEVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListDevicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList>(this, METHODID_LIST_DEVICES, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device>(this, METHODID_GET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getSetDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(this, METHODID_SET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent>(this, METHODID_GET_DEVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList>(this, METHODID_SELECT_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getListEndPointNamesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList>(this, METHODID_LIST_END_POINT_NAMES, compression))).addMethod(context.ContextServiceGrpc.getListLinkIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList>(this, METHODID_LIST_LINK_IDS, compression))).addMethod(context.ContextServiceGrpc.getListLinksMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList>(this, METHODID_LIST_LINKS, compression))).addMethod(context.ContextServiceGrpc.getGetLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link>(this, METHODID_GET_LINK, compression))).addMethod(context.ContextServiceGrpc.getSetLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId>(this, METHODID_SET_LINK, compression))).addMethod(context.ContextServiceGrpc.getRemoveLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetLinkEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent>(this, METHODID_GET_LINK_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListServiceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList>(this, METHODID_LIST_SERVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListServicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList>(this, METHODID_LIST_SERVICES, compression))).addMethod(context.ContextServiceGrpc.getGetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service>(this, METHODID_GET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getSetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_SET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_UNSET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getGetServiceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent>(this, METHODID_GET_SERVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList>(this, METHODID_SELECT_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getListSliceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList>(this, METHODID_LIST_SLICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListSlicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList>(this, METHODID_LIST_SLICES, compression))).addMethod(context.ContextServiceGrpc.getGetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice>(this, METHODID_GET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getSetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_SET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_UNSET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SLICE, compression))).addMethod(context.ContextServiceGrpc.getGetSliceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent>(this, METHODID_GET_SLICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList>(this, METHODID_SELECT_SLICE, compression))).addMethod(context.ContextServiceGrpc.getListConnectionIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList>(this, METHODID_LIST_CONNECTION_IDS, compression))).addMethod(context.ContextServiceGrpc.getListConnectionsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList>(this, METHODID_LIST_CONNECTIONS, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection>(this, METHODID_GET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getSetConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId>(this, METHODID_SET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getRemoveConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent>(this, METHODID_GET_CONNECTION_EVENTS, compression))).build();
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(context.ContextServiceGrpc.getListContextIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList>(this, METHODID_LIST_CONTEXT_IDS, compression))).addMethod(context.ContextServiceGrpc.getListContextsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList>(this, METHODID_LIST_CONTEXTS, compression))).addMethod(context.ContextServiceGrpc.getGetContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context>(this, METHODID_GET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getSetContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId>(this, METHODID_SET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getRemoveContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getGetContextEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent>(this, METHODID_GET_CONTEXT_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListTopologyIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList>(this, METHODID_LIST_TOPOLOGY_IDS, compression))).addMethod(context.ContextServiceGrpc.getListTopologiesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList>(this, METHODID_LIST_TOPOLOGIES, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology>(this, METHODID_GET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyDetailsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails>(this, METHODID_GET_TOPOLOGY_DETAILS, compression))).addMethod(context.ContextServiceGrpc.getSetTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId>(this, METHODID_SET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getRemoveTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent>(this, METHODID_GET_TOPOLOGY_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListDeviceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList>(this, METHODID_LIST_DEVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListDevicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList>(this, METHODID_LIST_DEVICES, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device>(this, METHODID_GET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getSetDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(this, METHODID_SET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent>(this, METHODID_GET_DEVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList>(this, METHODID_SELECT_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getListEndPointNamesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList>(this, METHODID_LIST_END_POINT_NAMES, compression))).addMethod(context.ContextServiceGrpc.getListLinkIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList>(this, METHODID_LIST_LINK_IDS, compression))).addMethod(context.ContextServiceGrpc.getListLinksMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList>(this, METHODID_LIST_LINKS, compression))).addMethod(context.ContextServiceGrpc.getGetLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link>(this, METHODID_GET_LINK, compression))).addMethod(context.ContextServiceGrpc.getSetLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId>(this, METHODID_SET_LINK, compression))).addMethod(context.ContextServiceGrpc.getRemoveLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetLinkEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent>(this, METHODID_GET_LINK_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListServiceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList>(this, METHODID_LIST_SERVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListServicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList>(this, METHODID_LIST_SERVICES, compression))).addMethod(context.ContextServiceGrpc.getGetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service>(this, METHODID_GET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getSetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_SET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_UNSET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getGetServiceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent>(this, METHODID_GET_SERVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList>(this, METHODID_SELECT_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getListSliceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList>(this, METHODID_LIST_SLICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListSlicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList>(this, METHODID_LIST_SLICES, compression))).addMethod(context.ContextServiceGrpc.getGetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice>(this, METHODID_GET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getSetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_SET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_UNSET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SLICE, compression))).addMethod(context.ContextServiceGrpc.getGetSliceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent>(this, METHODID_GET_SLICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList>(this, METHODID_SELECT_SLICE, compression))).addMethod(context.ContextServiceGrpc.getListConnectionIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList>(this, METHODID_LIST_CONNECTION_IDS, compression))).addMethod(context.ContextServiceGrpc.getListConnectionsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList>(this, METHODID_LIST_CONNECTIONS, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection>(this, METHODID_GET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getSetConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId>(this, METHODID_SET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getRemoveConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent>(this, METHODID_GET_CONNECTION_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.OpticalConfigList>(this, METHODID_GET_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSetOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfigId>(this, METHODID_SET_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSelectOpticalConfigMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfig>(this, METHODID_SELECT_OPTICAL_CONFIG, compression))).addMethod(context.ContextServiceGrpc.getSetOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.Empty>(this, METHODID_SET_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetOpticalLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.OpticalLinkId, context.ContextOuterClass.OpticalLink>(this, METHODID_GET_OPTICAL_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetFiberMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.FiberId, context.ContextOuterClass.Fiber>(this, METHODID_GET_FIBER, compression))).build();
         }
     }
 
@@ -546,6 +604,18 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp
 
     private static final int METHODID_GET_CONNECTION_EVENTS = 48;
 
+    private static final int METHODID_GET_OPTICAL_CONFIG = 49;
+
+    private static final int METHODID_SET_OPTICAL_CONFIG = 50;
+
+    private static final int METHODID_SELECT_OPTICAL_CONFIG = 51;
+
+    private static final int METHODID_SET_OPTICAL_LINK = 52;
+
+    private static final int METHODID_GET_OPTICAL_LINK = 53;
+
+    private static final int METHODID_GET_FIBER = 54;
+
     private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
 
         private final ContextServiceImplBase serviceImpl;
@@ -711,6 +781,24 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrp
                 case METHODID_GET_CONNECTION_EVENTS:
                     io.quarkus.grpc.stubs.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent>) responseObserver, compression, serviceImpl::getConnectionEvents);
                     break;
+                case METHODID_GET_OPTICAL_CONFIG:
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigList>) responseObserver, compression, serviceImpl::getOpticalConfig);
+                    break;
+                case METHODID_SET_OPTICAL_CONFIG:
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfig) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfigId>) responseObserver, compression, serviceImpl::setOpticalConfig);
+                    break;
+                case METHODID_SELECT_OPTICAL_CONFIG:
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalConfigId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalConfig>) responseObserver, compression, serviceImpl::selectOpticalConfig);
+                    break;
+                case METHODID_SET_OPTICAL_LINK:
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalLink) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::setOpticalLink);
+                    break;
+                case METHODID_GET_OPTICAL_LINK:
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.OpticalLinkId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.OpticalLink>) responseObserver, compression, serviceImpl::getOpticalLink);
+                    break;
+                case METHODID_GET_FIBER:
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.FiberId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Fiber>) responseObserver, compression, serviceImpl::getFiber);
+                    break;
                 default:
                     throw new java.lang.AssertionError();
             }
diff --git a/src/ztp/target/generated-sources/grpc/device/Device.java b/src/ztp/target/generated-sources/grpc/device/Device.java
index a127e8f1cc5302bba07d991b07540e91154a7973..93bd490405da36c7ee2f26121e5abd94c3ec13a5 100644
--- a/src/ztp/target/generated-sources/grpc/device/Device.java
+++ b/src/ztp/target/generated-sources/grpc/device/Device.java
@@ -86,6 +86,80 @@ public final class Device {
             return new MonitoringSettings();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private MonitoringSettings(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                monitoring.Monitoring.KpiDescriptor.Builder subBuilder = null;
+                                if (kpiDescriptor_ != null) {
+                                    subBuilder = kpiDescriptor_.toBuilder();
+                                }
+                                kpiDescriptor_ = input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiDescriptor_);
+                                    kpiDescriptor_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 29:
+                            {
+                                samplingDurationS_ = input.readFloat();
+                                break;
+                            }
+                        case 37:
+                            {
+                                samplingIntervalS_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return device.Device.internal_static_device_MonitoringSettings_descriptor;
         }
@@ -122,7 +196,7 @@ public final class Device {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int KPI_DESCRIPTOR_FIELD_NUMBER = 2;
@@ -152,12 +226,12 @@ public final class Device {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder() {
-            return kpiDescriptor_ == null ? monitoring.Monitoring.KpiDescriptor.getDefaultInstance() : kpiDescriptor_;
+            return getKpiDescriptor();
         }
 
         public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 3;
 
-        private float samplingDurationS_ = 0F;
+        private float samplingDurationS_;
 
         /**
          * <code>float sampling_duration_s = 3;</code>
@@ -170,7 +244,7 @@ public final class Device {
 
         public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 4;
 
-        private float samplingIntervalS_ = 0F;
+        private float samplingIntervalS_;
 
         /**
          * <code>float sampling_interval_s = 4;</code>
@@ -202,13 +276,13 @@ public final class Device {
             if (kpiDescriptor_ != null) {
                 output.writeMessage(2, getKpiDescriptor());
             }
-            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
+            if (samplingDurationS_ != 0F) {
                 output.writeFloat(3, samplingDurationS_);
             }
-            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
+            if (samplingIntervalS_ != 0F) {
                 output.writeFloat(4, samplingIntervalS_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -223,13 +297,13 @@ public final class Device {
             if (kpiDescriptor_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiDescriptor());
             }
-            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
+            if (samplingDurationS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingDurationS_);
             }
-            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
+            if (samplingIntervalS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(4, samplingIntervalS_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -259,7 +333,7 @@ public final class Device {
                 return false;
             if (java.lang.Float.floatToIntBits(getSamplingIntervalS()) != java.lang.Float.floatToIntBits(other.getSamplingIntervalS()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -283,7 +357,7 @@ public final class Device {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingDurationS());
             hash = (37 * hash) + SAMPLING_INTERVAL_S_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingIntervalS());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -377,24 +451,32 @@ public final class Device {
 
             // Construct using device.Device.MonitoringSettings.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                kpiDescriptor_ = null;
-                if (kpiDescriptorBuilder_ != null) {
-                    kpiDescriptorBuilder_.dispose();
+                if (kpiDescriptorBuilder_ == null) {
+                    kpiDescriptor_ = null;
+                } else {
+                    kpiDescriptor_ = null;
                     kpiDescriptorBuilder_ = null;
                 }
                 samplingDurationS_ = 0F;
@@ -424,27 +506,50 @@ public final class Device {
             @java.lang.Override
             public device.Device.MonitoringSettings buildPartial() {
                 device.Device.MonitoringSettings result = new device.Device.MonitoringSettings(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
+                }
+                if (kpiDescriptorBuilder_ == null) {
+                    result.kpiDescriptor_ = kpiDescriptor_;
+                } else {
+                    result.kpiDescriptor_ = kpiDescriptorBuilder_.build();
                 }
+                result.samplingDurationS_ = samplingDurationS_;
+                result.samplingIntervalS_ = samplingIntervalS_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(device.Device.MonitoringSettings result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.kpiDescriptor_ = kpiDescriptorBuilder_ == null ? kpiDescriptor_ : kpiDescriptorBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.samplingDurationS_ = samplingDurationS_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.samplingIntervalS_ = samplingIntervalS_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -472,7 +577,7 @@ public final class Device {
                 if (other.getSamplingIntervalS() != 0F) {
                     setSamplingIntervalS(other.getSamplingIntervalS());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -484,68 +589,20 @@ public final class Device {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                device.Device.MonitoringSettings parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getKpiDescriptorFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 29:
-                                {
-                                    samplingDurationS_ = input.readFloat();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 29
-                            case 37:
-                                {
-                                    samplingIntervalS_ = input.readFloat();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 37
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (device.Device.MonitoringSettings) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.KpiId kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
@@ -555,7 +612,7 @@ public final class Device {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -579,11 +636,10 @@ public final class Device {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -593,11 +649,10 @@ public final class Device {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -606,16 +661,15 @@ public final class Device {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -623,13 +677,13 @@ public final class Device {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -637,7 +691,6 @@ public final class Device {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -673,7 +726,7 @@ public final class Device {
              * @return Whether the kpiDescriptor field is set.
              */
             public boolean hasKpiDescriptor() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return kpiDescriptorBuilder_ != null || kpiDescriptor_ != null;
             }
 
             /**
@@ -697,11 +750,10 @@ public final class Device {
                         throw new NullPointerException();
                     }
                     kpiDescriptor_ = value;
+                    onChanged();
                 } else {
                     kpiDescriptorBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -711,11 +763,10 @@ public final class Device {
             public Builder setKpiDescriptor(monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
                 if (kpiDescriptorBuilder_ == null) {
                     kpiDescriptor_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiDescriptorBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -724,16 +775,15 @@ public final class Device {
              */
             public Builder mergeKpiDescriptor(monitoring.Monitoring.KpiDescriptor value) {
                 if (kpiDescriptorBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && kpiDescriptor_ != null && kpiDescriptor_ != monitoring.Monitoring.KpiDescriptor.getDefaultInstance()) {
-                        getKpiDescriptorBuilder().mergeFrom(value);
+                    if (kpiDescriptor_ != null) {
+                        kpiDescriptor_ = monitoring.Monitoring.KpiDescriptor.newBuilder(kpiDescriptor_).mergeFrom(value).buildPartial();
                     } else {
                         kpiDescriptor_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiDescriptorBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -741,13 +791,13 @@ public final class Device {
              * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
              */
             public Builder clearKpiDescriptor() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                kpiDescriptor_ = null;
-                if (kpiDescriptorBuilder_ != null) {
-                    kpiDescriptorBuilder_.dispose();
+                if (kpiDescriptorBuilder_ == null) {
+                    kpiDescriptor_ = null;
+                    onChanged();
+                } else {
+                    kpiDescriptor_ = null;
                     kpiDescriptorBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -755,7 +805,6 @@ public final class Device {
              * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
              */
             public monitoring.Monitoring.KpiDescriptor.Builder getKpiDescriptorBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiDescriptorFieldBuilder().getBuilder();
             }
@@ -800,7 +849,6 @@ public final class Device {
              */
             public Builder setSamplingDurationS(float value) {
                 samplingDurationS_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -810,7 +858,6 @@ public final class Device {
              * @return This builder for chaining.
              */
             public Builder clearSamplingDurationS() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 samplingDurationS_ = 0F;
                 onChanged();
                 return this;
@@ -834,7 +881,6 @@ public final class Device {
              */
             public Builder setSamplingIntervalS(float value) {
                 samplingIntervalS_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -844,7 +890,6 @@ public final class Device {
              * @return This builder for chaining.
              */
             public Builder clearSamplingIntervalS() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 samplingIntervalS_ = 0F;
                 onChanged();
                 return this;
@@ -877,17 +922,7 @@ public final class Device {
 
             @java.lang.Override
             public MonitoringSettings parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new MonitoringSettings(input, extensionRegistry);
             }
         };
 
diff --git a/src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java b/src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java
index 7e0cf9a8bb4cc207f65ce27177f7307567a19f04..a6886d8d620182790146164fbfef36762cf4368b 100644
--- a/src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java
@@ -4,8 +4,7 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: device.proto")
-@io.grpc.stub.annotations.GrpcGenerated
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: device.proto")
 public final class DeviceServiceGrpc {
 
     private DeviceServiceGrpc() {
@@ -133,52 +132,45 @@ public final class DeviceServiceGrpc {
 
     /**
      */
-    public interface AsyncService {
+    public static abstract class DeviceServiceImplBase implements io.grpc.BindableService {
 
         /**
          */
-        default void addDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
+        public void addDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getAddDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void configureDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
+        public void configureDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getConfigureDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void deleteDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void deleteDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteDeviceMethod(), responseObserver);
         }
 
         /**
          */
-        default void getInitialConfig(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceConfig> responseObserver) {
+        public void getInitialConfig(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceConfig> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInitialConfigMethod(), responseObserver);
         }
 
         /**
          */
-        default void monitorDeviceKpi(device.Device.MonitoringSettings request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void monitorDeviceKpi(device.Device.MonitoringSettings request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getMonitorDeviceKpiMethod(), responseObserver);
         }
-    }
-
-    /**
-     * Base class for the server implementation of the service DeviceService.
-     */
-    public static abstract class DeviceServiceImplBase implements io.grpc.BindableService, AsyncService {
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return DeviceServiceGrpc.bindService(this);
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getAddDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(this, METHODID_ADD_DEVICE))).addMethod(getConfigureDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(this, METHODID_CONFIGURE_DEVICE))).addMethod(getDeleteDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(this, METHODID_DELETE_DEVICE))).addMethod(getGetInitialConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceConfig>(this, METHODID_GET_INITIAL_CONFIG))).addMethod(getMonitorDeviceKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<device.Device.MonitoringSettings, context.ContextOuterClass.Empty>(this, METHODID_MONITOR_DEVICE_KPI))).build();
         }
     }
 
     /**
-     * A stub to allow clients to do asynchronous rpc calls to service DeviceService.
      */
     public static class DeviceServiceStub extends io.grpc.stub.AbstractAsyncStub<DeviceServiceStub> {
 
@@ -223,7 +215,6 @@ public final class DeviceServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do synchronous rpc calls to service DeviceService.
      */
     public static class DeviceServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<DeviceServiceBlockingStub> {
 
@@ -268,7 +259,6 @@ public final class DeviceServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do ListenableFuture-style rpc calls to service DeviceService.
      */
     public static class DeviceServiceFutureStub extends io.grpc.stub.AbstractFutureStub<DeviceServiceFutureStub> {
 
@@ -324,11 +314,11 @@ public final class DeviceServiceGrpc {
 
     private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
 
-        private final AsyncService serviceImpl;
+        private final DeviceServiceImplBase serviceImpl;
 
         private final int methodId;
 
-        MethodHandlers(AsyncService serviceImpl, int methodId) {
+        MethodHandlers(DeviceServiceImplBase serviceImpl, int methodId) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
         }
@@ -367,10 +357,6 @@ public final class DeviceServiceGrpc {
         }
     }
 
-    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
-        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getAddDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(service, METHODID_ADD_DEVICE))).addMethod(getConfigureDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(service, METHODID_CONFIGURE_DEVICE))).addMethod(getDeleteDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(service, METHODID_DELETE_DEVICE))).addMethod(getGetInitialConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceConfig>(service, METHODID_GET_INITIAL_CONFIG))).addMethod(getMonitorDeviceKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<device.Device.MonitoringSettings, context.ContextOuterClass.Empty>(service, METHODID_MONITOR_DEVICE_KPI))).build();
-    }
-
     private static abstract class DeviceServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
         DeviceServiceBaseDescriptorSupplier() {
diff --git a/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java b/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java
index 2f98ce3eb35a8ba9fda3a6d6bf4c17079c720bbe..4c80f4a06fe9c1d408fe41a05056c76612a9c61e 100644
--- a/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java
+++ b/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java
@@ -211,6 +211,160 @@ public final class Monitoring {
             return new KpiDescriptor();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiDescriptor(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                kpiDescription_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    kpiIdList_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                kpiIdList_.add(input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 32:
+                            {
+                                int rawValue = input.readEnum();
+                                kpiSampleType_ = rawValue;
+                                break;
+                            }
+                        case 42:
+                            {
+                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+                                if (deviceId_ != null) {
+                                    subBuilder = deviceId_.toBuilder();
+                                }
+                                deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(deviceId_);
+                                    deviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 50:
+                            {
+                                context.ContextOuterClass.EndPointId.Builder subBuilder = null;
+                                if (endpointId_ != null) {
+                                    subBuilder = endpointId_.toBuilder();
+                                }
+                                endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endpointId_);
+                                    endpointId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 58:
+                            {
+                                context.ContextOuterClass.ServiceId.Builder subBuilder = null;
+                                if (serviceId_ != null) {
+                                    subBuilder = serviceId_.toBuilder();
+                                }
+                                serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(serviceId_);
+                                    serviceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 66:
+                            {
+                                context.ContextOuterClass.SliceId.Builder subBuilder = null;
+                                if (sliceId_ != null) {
+                                    subBuilder = sliceId_.toBuilder();
+                                }
+                                sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(sliceId_);
+                                    sliceId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 74:
+                            {
+                                context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
+                                if (connectionId_ != null) {
+                                    subBuilder = connectionId_.toBuilder();
+                                }
+                                connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(connectionId_);
+                                    connectionId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 82:
+                            {
+                                context.ContextOuterClass.LinkId.Builder subBuilder = null;
+                                if (linkId_ != null) {
+                                    subBuilder = linkId_.toBuilder();
+                                }
+                                linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(linkId_);
+                                    linkId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_descriptor;
         }
@@ -247,13 +401,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int KPI_DESCRIPTION_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object kpiDescription_ = "";
+        private volatile java.lang.Object kpiDescription_;
 
         /**
          * <code>string kpi_description = 2;</code>
@@ -290,7 +443,6 @@ public final class Monitoring {
 
         public static final int KPI_ID_LIST_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_;
 
         /**
@@ -335,7 +487,7 @@ public final class Monitoring {
 
         public static final int KPI_SAMPLE_TYPE_FIELD_NUMBER = 4;
 
-        private int kpiSampleType_ = 0;
+        private int kpiSampleType_;
 
         /**
          * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
@@ -352,7 +504,8 @@ public final class Monitoring {
          */
         @java.lang.Override
         public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
-            kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(kpiSampleType_);
+            @SuppressWarnings("deprecation")
+            kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_);
             return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
         }
 
@@ -383,7 +536,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+            return getDeviceId();
         }
 
         public static final int ENDPOINT_ID_FIELD_NUMBER = 6;
@@ -413,7 +566,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+            return getEndpointId();
         }
 
         public static final int SERVICE_ID_FIELD_NUMBER = 7;
@@ -443,7 +596,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+            return getServiceId();
         }
 
         public static final int SLICE_ID_FIELD_NUMBER = 8;
@@ -473,7 +626,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+            return getSliceId();
         }
 
         public static final int CONNECTION_ID_FIELD_NUMBER = 9;
@@ -503,7 +656,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+            return getConnectionId();
         }
 
         public static final int LINK_ID_FIELD_NUMBER = 10;
@@ -533,7 +686,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+            return getLinkId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -554,7 +707,7 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(1, getKpiId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kpiDescription_)) {
+            if (!getKpiDescriptionBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, kpiDescription_);
             }
             for (int i = 0; i < kpiIdList_.size(); i++) {
@@ -581,7 +734,7 @@ public final class Monitoring {
             if (linkId_ != null) {
                 output.writeMessage(10, getLinkId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -593,7 +746,7 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kpiDescription_)) {
+            if (!getKpiDescriptionBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, kpiDescription_);
             }
             for (int i = 0; i < kpiIdList_.size(); i++) {
@@ -620,7 +773,7 @@ public final class Monitoring {
             if (linkId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getLinkId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -682,7 +835,7 @@ public final class Monitoring {
                 if (!getLinkId().equals(other.getLinkId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -730,7 +883,7 @@ public final class Monitoring {
                 hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getLinkId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -824,58 +977,71 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiDescriptor.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getKpiIdListFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
                 kpiDescription_ = "";
                 if (kpiIdListBuilder_ == null) {
                     kpiIdList_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    kpiIdList_ = null;
                     kpiIdListBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000004);
                 kpiSampleType_ = 0;
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
-                sliceId_ = null;
-                if (sliceIdBuilder_ != null) {
-                    sliceIdBuilder_.dispose();
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = null;
+                } else {
+                    sliceId_ = null;
                     sliceIdBuilder_ = null;
                 }
-                connectionId_ = null;
-                if (connectionIdBuilder_ != null) {
-                    connectionIdBuilder_.dispose();
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = null;
+                } else {
+                    connectionId_ = null;
                     connectionIdBuilder_ = null;
                 }
-                linkId_ = null;
-                if (linkIdBuilder_ != null) {
-                    linkIdBuilder_.dispose();
+                if (linkIdBuilder_ == null) {
+                    linkId_ = null;
+                } else {
+                    linkId_ = null;
                     linkIdBuilder_ = null;
                 }
                 return this;
@@ -903,55 +1069,85 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiDescriptor buildPartial() {
                 monitoring.Monitoring.KpiDescriptor result = new monitoring.Monitoring.KpiDescriptor(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiDescriptor result) {
+                result.kpiDescription_ = kpiDescription_;
                 if (kpiIdListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_);
-                        bitField0_ = (bitField0_ & ~0x00000004);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.kpiIdList_ = kpiIdList_;
                 } else {
                     result.kpiIdList_ = kpiIdListBuilder_.build();
                 }
-            }
-
-            private void buildPartial0(monitoring.Monitoring.KpiDescriptor result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.kpiDescription_ = kpiDescription_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.kpiSampleType_ = kpiSampleType_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
+                result.kpiSampleType_ = kpiSampleType_;
+                if (deviceIdBuilder_ == null) {
+                    result.deviceId_ = deviceId_;
+                } else {
+                    result.deviceId_ = deviceIdBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                if (endpointIdBuilder_ == null) {
+                    result.endpointId_ = endpointId_;
+                } else {
+                    result.endpointId_ = endpointIdBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000040) != 0)) {
-                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
+                if (serviceIdBuilder_ == null) {
+                    result.serviceId_ = serviceId_;
+                } else {
+                    result.serviceId_ = serviceIdBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000080) != 0)) {
-                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
+                if (sliceIdBuilder_ == null) {
+                    result.sliceId_ = sliceId_;
+                } else {
+                    result.sliceId_ = sliceIdBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000100) != 0)) {
-                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
+                if (connectionIdBuilder_ == null) {
+                    result.connectionId_ = connectionId_;
+                } else {
+                    result.connectionId_ = connectionIdBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000200) != 0)) {
-                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
+                if (linkIdBuilder_ == null) {
+                    result.linkId_ = linkId_;
+                } else {
+                    result.linkId_ = linkIdBuilder_.build();
                 }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -972,14 +1168,13 @@ public final class Monitoring {
                 }
                 if (!other.getKpiDescription().isEmpty()) {
                     kpiDescription_ = other.kpiDescription_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (kpiIdListBuilder_ == null) {
                     if (!other.kpiIdList_.isEmpty()) {
                         if (kpiIdList_.isEmpty()) {
                             kpiIdList_ = other.kpiIdList_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureKpiIdListIsMutable();
                             kpiIdList_.addAll(other.kpiIdList_);
@@ -992,7 +1187,7 @@ public final class Monitoring {
                             kpiIdListBuilder_.dispose();
                             kpiIdListBuilder_ = null;
                             kpiIdList_ = other.kpiIdList_;
-                            bitField0_ = (bitField0_ & ~0x00000004);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             kpiIdListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getKpiIdListFieldBuilder() : null;
                         } else {
                             kpiIdListBuilder_.addAllMessages(other.kpiIdList_);
@@ -1020,7 +1215,7 @@ public final class Monitoring {
                 if (other.hasLinkId()) {
                     mergeLinkId(other.getLinkId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -1032,110 +1227,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiDescriptor parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    kpiDescription_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    monitoring.Monitoring.KpiId m = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-                                    if (kpiIdListBuilder_ == null) {
-                                        ensureKpiIdListIsMutable();
-                                        kpiIdList_.add(m);
-                                    } else {
-                                        kpiIdListBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 26
-                            case 32:
-                                {
-                                    kpiSampleType_ = input.readEnum();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            case 42:
-                                {
-                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 50
-                            case 58:
-                                {
-                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000040;
-                                    break;
-                                }
-                            // case 58
-                            case 66:
-                                {
-                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000080;
-                                    break;
-                                }
-                            // case 66
-                            case 74:
-                                {
-                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000100;
-                                    break;
-                                }
-                            // case 74
-                            case 82:
-                                {
-                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000200;
-                                    break;
-                                }
-                            // case 82
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiDescriptor) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -1150,7 +1252,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -1174,11 +1276,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -1188,11 +1289,10 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -1201,16 +1301,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -1218,13 +1317,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -1232,7 +1331,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -1302,7 +1400,6 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 kpiDescription_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1313,7 +1410,6 @@ public final class Monitoring {
              */
             public Builder clearKpiDescription() {
                 kpiDescription_ = getDefaultInstance().getKpiDescription();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -1329,7 +1425,6 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 kpiDescription_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1337,9 +1432,9 @@ public final class Monitoring {
             private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_ = java.util.Collections.emptyList();
 
             private void ensureKpiIdListIsMutable() {
-                if (!((bitField0_ & 0x00000004) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     kpiIdList_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>(kpiIdList_);
-                    bitField0_ |= 0x00000004;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -1491,7 +1586,7 @@ public final class Monitoring {
             public Builder clearKpiIdList() {
                 if (kpiIdListBuilder_ == null) {
                     kpiIdList_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000004);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     kpiIdListBuilder_.clear();
@@ -1565,7 +1660,7 @@ public final class Monitoring {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> getKpiIdListFieldBuilder() {
                 if (kpiIdListBuilder_ == null) {
-                    kpiIdListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(kpiIdList_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    kpiIdListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(kpiIdList_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     kpiIdList_ = null;
                 }
                 return kpiIdListBuilder_;
@@ -1589,7 +1684,6 @@ public final class Monitoring {
              */
             public Builder setKpiSampleTypeValue(int value) {
                 kpiSampleType_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -1600,7 +1694,8 @@ public final class Monitoring {
              */
             @java.lang.Override
             public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
-                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(kpiSampleType_);
+                @SuppressWarnings("deprecation")
+                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_);
                 return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
             }
 
@@ -1613,7 +1708,6 @@ public final class Monitoring {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000008;
                 kpiSampleType_ = value.getNumber();
                 onChanged();
                 return this;
@@ -1624,7 +1718,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearKpiSampleType() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 kpiSampleType_ = 0;
                 onChanged();
                 return this;
@@ -1639,7 +1732,7 @@ public final class Monitoring {
              * @return Whether the deviceId field is set.
              */
             public boolean hasDeviceId() {
-                return ((bitField0_ & 0x00000010) != 0);
+                return deviceIdBuilder_ != null || deviceId_ != null;
             }
 
             /**
@@ -1663,11 +1756,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     deviceId_ = value;
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -1677,11 +1769,10 @@ public final class Monitoring {
             public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (deviceIdBuilder_ == null) {
                     deviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     deviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -1690,16 +1781,15 @@ public final class Monitoring {
              */
             public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                 if (deviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
-                        getDeviceIdBuilder().mergeFrom(value);
+                    if (deviceId_ != null) {
+                        deviceId_ = context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
                     } else {
                         deviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     deviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -1707,13 +1797,13 @@ public final class Monitoring {
              * <code>.context.DeviceId device_id = 5;</code>
              */
             public Builder clearDeviceId() {
-                bitField0_ = (bitField0_ & ~0x00000010);
-                deviceId_ = null;
-                if (deviceIdBuilder_ != null) {
-                    deviceIdBuilder_.dispose();
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = null;
+                    onChanged();
+                } else {
+                    deviceId_ = null;
                     deviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -1721,7 +1811,6 @@ public final class Monitoring {
              * <code>.context.DeviceId device_id = 5;</code>
              */
             public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return getDeviceIdFieldBuilder().getBuilder();
             }
@@ -1757,7 +1846,7 @@ public final class Monitoring {
              * @return Whether the endpointId field is set.
              */
             public boolean hasEndpointId() {
-                return ((bitField0_ & 0x00000020) != 0);
+                return endpointIdBuilder_ != null || endpointId_ != null;
             }
 
             /**
@@ -1781,11 +1870,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     endpointId_ = value;
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -1795,11 +1883,10 @@ public final class Monitoring {
             public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                 if (endpointIdBuilder_ == null) {
                     endpointId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endpointIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -1808,16 +1895,15 @@ public final class Monitoring {
              */
             public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                 if (endpointIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000020) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
-                        getEndpointIdBuilder().mergeFrom(value);
+                    if (endpointId_ != null) {
+                        endpointId_ = context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
                     } else {
                         endpointId_ = value;
                     }
+                    onChanged();
                 } else {
                     endpointIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -1825,13 +1911,13 @@ public final class Monitoring {
              * <code>.context.EndPointId endpoint_id = 6;</code>
              */
             public Builder clearEndpointId() {
-                bitField0_ = (bitField0_ & ~0x00000020);
-                endpointId_ = null;
-                if (endpointIdBuilder_ != null) {
-                    endpointIdBuilder_.dispose();
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = null;
+                    onChanged();
+                } else {
+                    endpointId_ = null;
                     endpointIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -1839,7 +1925,6 @@ public final class Monitoring {
              * <code>.context.EndPointId endpoint_id = 6;</code>
              */
             public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return getEndpointIdFieldBuilder().getBuilder();
             }
@@ -1875,7 +1960,7 @@ public final class Monitoring {
              * @return Whether the serviceId field is set.
              */
             public boolean hasServiceId() {
-                return ((bitField0_ & 0x00000040) != 0);
+                return serviceIdBuilder_ != null || serviceId_ != null;
             }
 
             /**
@@ -1899,11 +1984,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     serviceId_ = value;
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -1913,11 +1997,10 @@ public final class Monitoring {
             public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                 if (serviceIdBuilder_ == null) {
                     serviceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     serviceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -1926,16 +2009,15 @@ public final class Monitoring {
              */
             public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                 if (serviceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000040) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
-                        getServiceIdBuilder().mergeFrom(value);
+                    if (serviceId_ != null) {
+                        serviceId_ = context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
                     } else {
                         serviceId_ = value;
                     }
+                    onChanged();
                 } else {
                     serviceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000040;
-                onChanged();
                 return this;
             }
 
@@ -1943,13 +2025,13 @@ public final class Monitoring {
              * <code>.context.ServiceId service_id = 7;</code>
              */
             public Builder clearServiceId() {
-                bitField0_ = (bitField0_ & ~0x00000040);
-                serviceId_ = null;
-                if (serviceIdBuilder_ != null) {
-                    serviceIdBuilder_.dispose();
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = null;
+                    onChanged();
+                } else {
+                    serviceId_ = null;
                     serviceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -1957,7 +2039,6 @@ public final class Monitoring {
              * <code>.context.ServiceId service_id = 7;</code>
              */
             public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-                bitField0_ |= 0x00000040;
                 onChanged();
                 return getServiceIdFieldBuilder().getBuilder();
             }
@@ -1993,7 +2074,7 @@ public final class Monitoring {
              * @return Whether the sliceId field is set.
              */
             public boolean hasSliceId() {
-                return ((bitField0_ & 0x00000080) != 0);
+                return sliceIdBuilder_ != null || sliceId_ != null;
             }
 
             /**
@@ -2017,11 +2098,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     sliceId_ = value;
+                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -2031,11 +2111,10 @@ public final class Monitoring {
             public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
                 if (sliceIdBuilder_ == null) {
                     sliceId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     sliceIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -2044,16 +2123,15 @@ public final class Monitoring {
              */
             public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
                 if (sliceIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000080) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
-                        getSliceIdBuilder().mergeFrom(value);
+                    if (sliceId_ != null) {
+                        sliceId_ = context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
                     } else {
                         sliceId_ = value;
                     }
+                    onChanged();
                 } else {
                     sliceIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000080;
-                onChanged();
                 return this;
             }
 
@@ -2061,13 +2139,13 @@ public final class Monitoring {
              * <code>.context.SliceId slice_id = 8;</code>
              */
             public Builder clearSliceId() {
-                bitField0_ = (bitField0_ & ~0x00000080);
-                sliceId_ = null;
-                if (sliceIdBuilder_ != null) {
-                    sliceIdBuilder_.dispose();
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = null;
+                    onChanged();
+                } else {
+                    sliceId_ = null;
                     sliceIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2075,7 +2153,6 @@ public final class Monitoring {
              * <code>.context.SliceId slice_id = 8;</code>
              */
             public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
-                bitField0_ |= 0x00000080;
                 onChanged();
                 return getSliceIdFieldBuilder().getBuilder();
             }
@@ -2111,7 +2188,7 @@ public final class Monitoring {
              * @return Whether the connectionId field is set.
              */
             public boolean hasConnectionId() {
-                return ((bitField0_ & 0x00000100) != 0);
+                return connectionIdBuilder_ != null || connectionId_ != null;
             }
 
             /**
@@ -2135,11 +2212,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     connectionId_ = value;
+                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -2149,11 +2225,10 @@ public final class Monitoring {
             public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                 if (connectionIdBuilder_ == null) {
                     connectionId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     connectionIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -2162,16 +2237,15 @@ public final class Monitoring {
              */
             public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
                 if (connectionIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000100) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
-                        getConnectionIdBuilder().mergeFrom(value);
+                    if (connectionId_ != null) {
+                        connectionId_ = context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
                     } else {
                         connectionId_ = value;
                     }
+                    onChanged();
                 } else {
                     connectionIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000100;
-                onChanged();
                 return this;
             }
 
@@ -2179,13 +2253,13 @@ public final class Monitoring {
              * <code>.context.ConnectionId connection_id = 9;</code>
              */
             public Builder clearConnectionId() {
-                bitField0_ = (bitField0_ & ~0x00000100);
-                connectionId_ = null;
-                if (connectionIdBuilder_ != null) {
-                    connectionIdBuilder_.dispose();
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = null;
+                    onChanged();
+                } else {
+                    connectionId_ = null;
                     connectionIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2193,7 +2267,6 @@ public final class Monitoring {
              * <code>.context.ConnectionId connection_id = 9;</code>
              */
             public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
-                bitField0_ |= 0x00000100;
                 onChanged();
                 return getConnectionIdFieldBuilder().getBuilder();
             }
@@ -2229,7 +2302,7 @@ public final class Monitoring {
              * @return Whether the linkId field is set.
              */
             public boolean hasLinkId() {
-                return ((bitField0_ & 0x00000200) != 0);
+                return linkIdBuilder_ != null || linkId_ != null;
             }
 
             /**
@@ -2253,11 +2326,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     linkId_ = value;
+                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000200;
-                onChanged();
                 return this;
             }
 
@@ -2267,11 +2339,10 @@ public final class Monitoring {
             public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
                 if (linkIdBuilder_ == null) {
                     linkId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     linkIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000200;
-                onChanged();
                 return this;
             }
 
@@ -2280,16 +2351,15 @@ public final class Monitoring {
              */
             public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
                 if (linkIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000200) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
-                        getLinkIdBuilder().mergeFrom(value);
+                    if (linkId_ != null) {
+                        linkId_ = context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
                     } else {
                         linkId_ = value;
                     }
+                    onChanged();
                 } else {
                     linkIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000200;
-                onChanged();
                 return this;
             }
 
@@ -2297,13 +2367,13 @@ public final class Monitoring {
              * <code>.context.LinkId link_id = 10;</code>
              */
             public Builder clearLinkId() {
-                bitField0_ = (bitField0_ & ~0x00000200);
-                linkId_ = null;
-                if (linkIdBuilder_ != null) {
-                    linkIdBuilder_.dispose();
+                if (linkIdBuilder_ == null) {
+                    linkId_ = null;
+                    onChanged();
+                } else {
+                    linkId_ = null;
                     linkIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2311,7 +2381,6 @@ public final class Monitoring {
              * <code>.context.LinkId link_id = 10;</code>
              */
             public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
-                bitField0_ |= 0x00000200;
                 onChanged();
                 return getLinkIdFieldBuilder().getBuilder();
             }
@@ -2365,17 +2434,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiDescriptor parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiDescriptor(input, extensionRegistry);
             }
         };
 
@@ -2453,17 +2512,78 @@ public final class Monitoring {
             return new MonitorKpiRequest();
         }
 
-        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
-            return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
-        }
-
         @java.lang.Override
-        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
-            return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class);
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
         }
 
-        public static final int KPI_ID_FIELD_NUMBER = 1;
-
+        private MonitorKpiRequest(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 21:
+                            {
+                                monitoringWindowS_ = input.readFloat();
+                                break;
+                            }
+                        case 29:
+                            {
+                                samplingRateS_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class);
+        }
+
+        public static final int KPI_ID_FIELD_NUMBER = 1;
+
         private monitoring.Monitoring.KpiId kpiId_;
 
         /**
@@ -2489,12 +2609,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
 
-        private float monitoringWindowS_ = 0F;
+        private float monitoringWindowS_;
 
         /**
          * <code>float monitoring_window_s = 2;</code>
@@ -2507,7 +2627,7 @@ public final class Monitoring {
 
         public static final int SAMPLING_RATE_S_FIELD_NUMBER = 3;
 
-        private float samplingRateS_ = 0F;
+        private float samplingRateS_;
 
         /**
          * <pre>
@@ -2540,13 +2660,13 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(1, getKpiId());
             }
-            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
+            if (monitoringWindowS_ != 0F) {
                 output.writeFloat(2, monitoringWindowS_);
             }
-            if (java.lang.Float.floatToRawIntBits(samplingRateS_) != 0) {
+            if (samplingRateS_ != 0F) {
                 output.writeFloat(3, samplingRateS_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -2558,13 +2678,13 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
             }
-            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
+            if (monitoringWindowS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, monitoringWindowS_);
             }
-            if (java.lang.Float.floatToRawIntBits(samplingRateS_) != 0) {
+            if (samplingRateS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingRateS_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -2588,7 +2708,7 @@ public final class Monitoring {
                 return false;
             if (java.lang.Float.floatToIntBits(getSamplingRateS()) != java.lang.Float.floatToIntBits(other.getSamplingRateS()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -2608,7 +2728,7 @@ public final class Monitoring {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getMonitoringWindowS());
             hash = (37 * hash) + SAMPLING_RATE_S_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingRateS());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2702,19 +2822,26 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.MonitorKpiRequest.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
                 monitoringWindowS_ = 0F;
@@ -2744,24 +2871,45 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.MonitorKpiRequest buildPartial() {
                 monitoring.Monitoring.MonitorKpiRequest result = new monitoring.Monitoring.MonitorKpiRequest(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
                 }
+                result.monitoringWindowS_ = monitoringWindowS_;
+                result.samplingRateS_ = samplingRateS_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.MonitorKpiRequest result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.monitoringWindowS_ = monitoringWindowS_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.samplingRateS_ = samplingRateS_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -2786,7 +2934,7 @@ public final class Monitoring {
                 if (other.getSamplingRateS() != 0F) {
                     setSamplingRateS(other.getSamplingRateS());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -2798,61 +2946,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.MonitorKpiRequest parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 21:
-                                {
-                                    monitoringWindowS_ = input.readFloat();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 21
-                            case 29:
-                                {
-                                    samplingRateS_ = input.readFloat();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 29
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.MonitorKpiRequest) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.KpiId kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
@@ -2862,7 +2969,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -2886,11 +2993,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -2900,11 +3006,10 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -2913,16 +3018,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -2930,13 +3034,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2944,7 +3048,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -2989,7 +3092,6 @@ public final class Monitoring {
              */
             public Builder setMonitoringWindowS(float value) {
                 monitoringWindowS_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -2999,7 +3101,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearMonitoringWindowS() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 monitoringWindowS_ = 0F;
                 onChanged();
                 return this;
@@ -3031,7 +3132,6 @@ public final class Monitoring {
              */
             public Builder setSamplingRateS(float value) {
                 samplingRateS_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -3045,7 +3145,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSamplingRateS() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 samplingRateS_ = 0F;
                 onChanged();
                 return this;
@@ -3078,17 +3177,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public MonitorKpiRequest parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new MonitorKpiRequest(input, extensionRegistry);
             }
         };
 
@@ -3233,6 +3322,93 @@ public final class Monitoring {
             return new KpiQuery();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiQuery(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    kpiIds_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                kpiIds_.add(input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
+                                break;
+                            }
+                        case 21:
+                            {
+                                monitoringWindowS_ = input.readFloat();
+                                break;
+                            }
+                        case 24:
+                            {
+                                lastNSamples_ = input.readUInt32();
+                                break;
+                            }
+                        case 34:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (startTimestamp_ != null) {
+                                    subBuilder = startTimestamp_.toBuilder();
+                                }
+                                startTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(startTimestamp_);
+                                    startTimestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 42:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (endTimestamp_ != null) {
+                                    subBuilder = endTimestamp_.toBuilder();
+                                }
+                                endTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endTimestamp_);
+                                    endTimestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
         }
@@ -3244,7 +3420,6 @@ public final class Monitoring {
 
         public static final int KPI_IDS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.KpiId> kpiIds_;
 
         /**
@@ -3289,7 +3464,7 @@ public final class Monitoring {
 
         public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
 
-        private float monitoringWindowS_ = 0F;
+        private float monitoringWindowS_;
 
         /**
          * <code>float monitoring_window_s = 2;</code>
@@ -3302,7 +3477,7 @@ public final class Monitoring {
 
         public static final int LAST_N_SAMPLES_FIELD_NUMBER = 3;
 
-        private int lastNSamples_ = 0;
+        private int lastNSamples_;
 
         /**
          * <pre>
@@ -3356,7 +3531,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
-            return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+            return getStartTimestamp();
         }
 
         public static final int END_TIMESTAMP_FIELD_NUMBER = 5;
@@ -3398,7 +3573,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
-            return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+            return getEndTimestamp();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -3419,7 +3594,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiIds_.size(); i++) {
                 output.writeMessage(1, kpiIds_.get(i));
             }
-            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
+            if (monitoringWindowS_ != 0F) {
                 output.writeFloat(2, monitoringWindowS_);
             }
             if (lastNSamples_ != 0) {
@@ -3431,7 +3606,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 output.writeMessage(5, getEndTimestamp());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -3443,7 +3618,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiIds_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpiIds_.get(i));
             }
-            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
+            if (monitoringWindowS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, monitoringWindowS_);
             }
             if (lastNSamples_ != 0) {
@@ -3455,7 +3630,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getEndTimestamp());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -3487,7 +3662,7 @@ public final class Monitoring {
                 if (!getEndTimestamp().equals(other.getEndTimestamp()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -3515,7 +3690,7 @@ public final class Monitoring {
                 hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getEndTimestamp().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -3609,33 +3784,41 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiQuery.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getKpiIdsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (kpiIdsBuilder_ == null) {
                     kpiIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    kpiIds_ = null;
                     kpiIdsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 monitoringWindowS_ = 0F;
                 lastNSamples_ = 0;
-                startTimestamp_ = null;
-                if (startTimestampBuilder_ != null) {
-                    startTimestampBuilder_.dispose();
+                if (startTimestampBuilder_ == null) {
+                    startTimestamp_ = null;
+                } else {
+                    startTimestamp_ = null;
                     startTimestampBuilder_ = null;
                 }
-                endTimestamp_ = null;
-                if (endTimestampBuilder_ != null) {
-                    endTimestampBuilder_.dispose();
+                if (endTimestampBuilder_ == null) {
+                    endTimestamp_ = null;
+                } else {
+                    endTimestamp_ = null;
                     endTimestampBuilder_ = null;
                 }
                 return this;
@@ -3663,15 +3846,7 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiQuery buildPartial() {
                 monitoring.Monitoring.KpiQuery result = new monitoring.Monitoring.KpiQuery(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiQuery result) {
+                int from_bitField0_ = bitField0_;
                 if (kpiIdsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_);
@@ -3681,22 +3856,50 @@ public final class Monitoring {
                 } else {
                     result.kpiIds_ = kpiIdsBuilder_.build();
                 }
-            }
-
-            private void buildPartial0(monitoring.Monitoring.KpiQuery result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.monitoringWindowS_ = monitoringWindowS_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.lastNSamples_ = lastNSamples_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.startTimestamp_ = startTimestampBuilder_ == null ? startTimestamp_ : startTimestampBuilder_.build();
+                result.monitoringWindowS_ = monitoringWindowS_;
+                result.lastNSamples_ = lastNSamples_;
+                if (startTimestampBuilder_ == null) {
+                    result.startTimestamp_ = startTimestamp_;
+                } else {
+                    result.startTimestamp_ = startTimestampBuilder_.build();
                 }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.endTimestamp_ = endTimestampBuilder_ == null ? endTimestamp_ : endTimestampBuilder_.build();
+                if (endTimestampBuilder_ == null) {
+                    result.endTimestamp_ = endTimestamp_;
+                } else {
+                    result.endTimestamp_ = endTimestampBuilder_.build();
                 }
+                onBuilt();
+                return result;
+            }
+
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -3748,7 +3951,7 @@ public final class Monitoring {
                 if (other.hasEndTimestamp()) {
                     mergeEndTimestamp(other.getEndTimestamp());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -3760,75 +3963,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiQuery parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    monitoring.Monitoring.KpiId m = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-                                    if (kpiIdsBuilder_ == null) {
-                                        ensureKpiIdsIsMutable();
-                                        kpiIds_.add(m);
-                                    } else {
-                                        kpiIdsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            case 21:
-                                {
-                                    monitoringWindowS_ = input.readFloat();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 21
-                            case 24:
-                                {
-                                    lastNSamples_ = input.readUInt32();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 34:
-                                {
-                                    input.readMessage(getStartTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    input.readMessage(getEndTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiQuery) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -4089,7 +4234,6 @@ public final class Monitoring {
              */
             public Builder setMonitoringWindowS(float value) {
                 monitoringWindowS_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -4099,7 +4243,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearMonitoringWindowS() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 monitoringWindowS_ = 0F;
                 onChanged();
                 return this;
@@ -4131,7 +4274,6 @@ public final class Monitoring {
              */
             public Builder setLastNSamples(int value) {
                 lastNSamples_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -4145,7 +4287,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearLastNSamples() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 lastNSamples_ = 0;
                 onChanged();
                 return this;
@@ -4164,7 +4305,7 @@ public final class Monitoring {
              * @return Whether the startTimestamp field is set.
              */
             public boolean hasStartTimestamp() {
-                return ((bitField0_ & 0x00000008) != 0);
+                return startTimestampBuilder_ != null || startTimestamp_ != null;
             }
 
             /**
@@ -4196,11 +4337,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     startTimestamp_ = value;
+                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -4214,11 +4354,10 @@ public final class Monitoring {
             public Builder setStartTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (startTimestampBuilder_ == null) {
                     startTimestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -4231,16 +4370,15 @@ public final class Monitoring {
              */
             public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (startTimestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0) && startTimestamp_ != null && startTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getStartTimestampBuilder().mergeFrom(value);
+                    if (startTimestamp_ != null) {
+                        startTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(startTimestamp_).mergeFrom(value).buildPartial();
                     } else {
                         startTimestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     startTimestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -4252,13 +4390,13 @@ public final class Monitoring {
              * <code>.context.Timestamp start_timestamp = 4;</code>
              */
             public Builder clearStartTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000008);
-                startTimestamp_ = null;
-                if (startTimestampBuilder_ != null) {
-                    startTimestampBuilder_.dispose();
+                if (startTimestampBuilder_ == null) {
+                    startTimestamp_ = null;
+                    onChanged();
+                } else {
+                    startTimestamp_ = null;
                     startTimestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -4270,7 +4408,6 @@ public final class Monitoring {
              * <code>.context.Timestamp start_timestamp = 4;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return getStartTimestampFieldBuilder().getBuilder();
             }
@@ -4318,7 +4455,7 @@ public final class Monitoring {
              * @return Whether the endTimestamp field is set.
              */
             public boolean hasEndTimestamp() {
-                return ((bitField0_ & 0x00000010) != 0);
+                return endTimestampBuilder_ != null || endTimestamp_ != null;
             }
 
             /**
@@ -4350,11 +4487,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     endTimestamp_ = value;
+                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -4368,11 +4504,10 @@ public final class Monitoring {
             public Builder setEndTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (endTimestampBuilder_ == null) {
                     endTimestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -4385,16 +4520,15 @@ public final class Monitoring {
              */
             public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (endTimestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0) && endTimestamp_ != null && endTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getEndTimestampBuilder().mergeFrom(value);
+                    if (endTimestamp_ != null) {
+                        endTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
                     } else {
                         endTimestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     endTimestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -4406,13 +4540,13 @@ public final class Monitoring {
              * <code>.context.Timestamp end_timestamp = 5;</code>
              */
             public Builder clearEndTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000010);
-                endTimestamp_ = null;
-                if (endTimestampBuilder_ != null) {
-                    endTimestampBuilder_.dispose();
+                if (endTimestampBuilder_ == null) {
+                    endTimestamp_ = null;
+                    onChanged();
+                } else {
+                    endTimestamp_ = null;
                     endTimestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -4424,7 +4558,6 @@ public final class Monitoring {
              * <code>.context.Timestamp end_timestamp = 5;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return getEndTimestampFieldBuilder().getBuilder();
             }
@@ -4486,17 +4619,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiQuery parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiQuery(input, extensionRegistry);
             }
         };
 
@@ -4579,6 +4702,70 @@ public final class Monitoring {
             return new RawKpi();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private RawKpi(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (timestamp_ != null) {
+                                    subBuilder = timestamp_.toBuilder();
+                                }
+                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(timestamp_);
+                                    timestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
+                                if (kpiValue_ != null) {
+                                    subBuilder = kpiValue_.toBuilder();
+                                }
+                                kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiValue_);
+                                    kpiValue_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor;
         }
@@ -4615,7 +4802,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+            return getTimestamp();
         }
 
         public static final int KPI_VALUE_FIELD_NUMBER = 2;
@@ -4645,7 +4832,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+            return getKpiValue();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -4669,7 +4856,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 output.writeMessage(2, getKpiValue());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -4684,7 +4871,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiValue());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -4710,7 +4897,7 @@ public final class Monitoring {
                 if (!getKpiValue().equals(other.getKpiValue()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -4730,7 +4917,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiValue().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -4828,24 +5015,32 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.RawKpi.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                kpiValue_ = null;
-                if (kpiValueBuilder_ != null) {
-                    kpiValueBuilder_.dispose();
+                if (kpiValueBuilder_ == null) {
+                    kpiValue_ = null;
+                } else {
+                    kpiValue_ = null;
                     kpiValueBuilder_ = null;
                 }
                 return this;
@@ -4873,43 +5068,70 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.RawKpi buildPartial() {
                 monitoring.Monitoring.RawKpi result = new monitoring.Monitoring.RawKpi(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (timestampBuilder_ == null) {
+                    result.timestamp_ = timestamp_;
+                } else {
+                    result.timestamp_ = timestampBuilder_.build();
+                }
+                if (kpiValueBuilder_ == null) {
+                    result.kpiValue_ = kpiValue_;
+                } else {
+                    result.kpiValue_ = kpiValueBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.RawKpi result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.kpiValue_ = kpiValueBuilder_ == null ? kpiValue_ : kpiValueBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
             }
 
             @java.lang.Override
-            public Builder mergeFrom(com.google.protobuf.Message other) {
-                if (other instanceof monitoring.Monitoring.RawKpi) {
-                    return mergeFrom((monitoring.Monitoring.RawKpi) other);
-                } else {
-                    super.mergeFrom(other);
-                    return this;
-                }
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
             }
 
-            public Builder mergeFrom(monitoring.Monitoring.RawKpi other) {
-                if (other == monitoring.Monitoring.RawKpi.getDefaultInstance())
-                    return this;
-                if (other.hasTimestamp()) {
-                    mergeTimestamp(other.getTimestamp());
-                }
-                if (other.hasKpiValue()) {
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.RawKpi) {
+                    return mergeFrom((monitoring.Monitoring.RawKpi) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.RawKpi other) {
+                if (other == monitoring.Monitoring.RawKpi.getDefaultInstance())
+                    return this;
+                if (other.hasTimestamp()) {
+                    mergeTimestamp(other.getTimestamp());
+                }
+                if (other.hasKpiValue()) {
                     mergeKpiValue(other.getKpiValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -4921,54 +5143,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.RawKpi parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getKpiValueFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.RawKpi) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Timestamp timestamp_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
@@ -4978,7 +5166,7 @@ public final class Monitoring {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return timestampBuilder_ != null || timestamp_ != null;
             }
 
             /**
@@ -5002,11 +5190,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5016,11 +5203,10 @@ public final class Monitoring {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5029,16 +5215,15 @@ public final class Monitoring {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getTimestampBuilder().mergeFrom(value);
+                    if (timestamp_ != null) {
+                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
                     } else {
                         timestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5046,13 +5231,13 @@ public final class Monitoring {
              * <code>.context.Timestamp timestamp = 1;</code>
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                    onChanged();
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -5060,7 +5245,6 @@ public final class Monitoring {
              * <code>.context.Timestamp timestamp = 1;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -5096,7 +5280,7 @@ public final class Monitoring {
              * @return Whether the kpiValue field is set.
              */
             public boolean hasKpiValue() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return kpiValueBuilder_ != null || kpiValue_ != null;
             }
 
             /**
@@ -5120,11 +5304,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiValue_ = value;
+                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -5134,11 +5317,10 @@ public final class Monitoring {
             public Builder setKpiValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiValueBuilder_ == null) {
                     kpiValue_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -5147,16 +5329,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiValueBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && kpiValue_ != null && kpiValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
-                        getKpiValueBuilder().mergeFrom(value);
+                    if (kpiValue_ != null) {
+                        kpiValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
                     } else {
                         kpiValue_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiValueBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -5164,13 +5345,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpi_value = 2;</code>
              */
             public Builder clearKpiValue() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                kpiValue_ = null;
-                if (kpiValueBuilder_ != null) {
-                    kpiValueBuilder_.dispose();
+                if (kpiValueBuilder_ == null) {
+                    kpiValue_ = null;
+                    onChanged();
+                } else {
+                    kpiValue_ = null;
                     kpiValueBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -5178,7 +5359,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpi_value = 2;</code>
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiValueFieldBuilder().getBuilder();
             }
@@ -5232,17 +5412,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public RawKpi parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new RawKpi(input, extensionRegistry);
             }
         };
 
@@ -5334,6 +5504,70 @@ public final class Monitoring {
             return new RawKpiList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private RawKpiList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    rawKpis_ = new java.util.ArrayList<monitoring.Monitoring.RawKpi>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                rawKpis_.add(input.readMessage(monitoring.Monitoring.RawKpi.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor;
         }
@@ -5370,12 +5604,11 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int RAW_KPIS_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.RawKpi> rawKpis_;
 
         /**
@@ -5439,7 +5672,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpis_.size(); i++) {
                 output.writeMessage(2, rawKpis_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -5454,7 +5687,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpis_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, rawKpis_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -5476,7 +5709,7 @@ public final class Monitoring {
             }
             if (!getRawKpisList().equals(other.getRawKpisList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -5496,7 +5729,7 @@ public final class Monitoring {
                 hash = (37 * hash) + RAW_KPIS_FIELD_NUMBER;
                 hash = (53 * hash) + getRawKpisList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -5594,28 +5827,35 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.RawKpiList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getRawKpisFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
                 if (rawKpisBuilder_ == null) {
                     rawKpis_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    rawKpis_ = null;
                     rawKpisBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000002);
                 return this;
             }
 
@@ -5641,31 +5881,53 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.RawKpiList buildPartial() {
                 monitoring.Monitoring.RawKpiList result = new monitoring.Monitoring.RawKpiList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
                 }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.RawKpiList result) {
                 if (rawKpisBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0)) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
                         rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_);
-                        bitField0_ = (bitField0_ & ~0x00000002);
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     }
                     result.rawKpis_ = rawKpis_;
                 } else {
                     result.rawKpis_ = rawKpisBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.RawKpiList result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -5688,7 +5950,7 @@ public final class Monitoring {
                     if (!other.rawKpis_.isEmpty()) {
                         if (rawKpis_.isEmpty()) {
                             rawKpis_ = other.rawKpis_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                         } else {
                             ensureRawKpisIsMutable();
                             rawKpis_.addAll(other.rawKpis_);
@@ -5701,14 +5963,14 @@ public final class Monitoring {
                             rawKpisBuilder_.dispose();
                             rawKpisBuilder_ = null;
                             rawKpis_ = other.rawKpis_;
-                            bitField0_ = (bitField0_ & ~0x00000002);
+                            bitField0_ = (bitField0_ & ~0x00000001);
                             rawKpisBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getRawKpisFieldBuilder() : null;
                         } else {
                             rawKpisBuilder_.addAllMessages(other.rawKpis_);
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -5720,54 +5982,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.RawKpiList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    monitoring.Monitoring.RawKpi m = input.readMessage(monitoring.Monitoring.RawKpi.parser(), extensionRegistry);
-                                    if (rawKpisBuilder_ == null) {
-                                        ensureRawKpisIsMutable();
-                                        rawKpis_.add(m);
-                                    } else {
-                                        rawKpisBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.RawKpiList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -5782,7 +6007,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -5806,11 +6031,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5820,11 +6044,10 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5833,16 +6056,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -5850,13 +6072,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -5864,7 +6086,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -5894,9 +6115,9 @@ public final class Monitoring {
             private java.util.List<monitoring.Monitoring.RawKpi> rawKpis_ = java.util.Collections.emptyList();
 
             private void ensureRawKpisIsMutable() {
-                if (!((bitField0_ & 0x00000002) != 0)) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     rawKpis_ = new java.util.ArrayList<monitoring.Monitoring.RawKpi>(rawKpis_);
-                    bitField0_ |= 0x00000002;
+                    bitField0_ |= 0x00000001;
                 }
             }
 
@@ -6048,7 +6269,7 @@ public final class Monitoring {
             public Builder clearRawKpis() {
                 if (rawKpisBuilder_ == null) {
                     rawKpis_ = java.util.Collections.emptyList();
-                    bitField0_ = (bitField0_ & ~0x00000002);
+                    bitField0_ = (bitField0_ & ~0x00000001);
                     onChanged();
                 } else {
                     rawKpisBuilder_.clear();
@@ -6122,7 +6343,7 @@ public final class Monitoring {
 
             private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder> getRawKpisFieldBuilder() {
                 if (rawKpisBuilder_ == null) {
-                    rawKpisBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder>(rawKpis_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    rawKpisBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder>(rawKpis_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                     rawKpis_ = null;
                 }
                 return rawKpisBuilder_;
@@ -6155,17 +6376,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public RawKpiList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new RawKpiList(input, extensionRegistry);
             }
         };
 
@@ -6240,6 +6451,57 @@ public final class Monitoring {
             return new RawKpiTable();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private RawKpiTable(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    rawKpiLists_ = new java.util.ArrayList<monitoring.Monitoring.RawKpiList>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                rawKpiLists_.add(input.readMessage(monitoring.Monitoring.RawKpiList.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor;
         }
@@ -6251,7 +6513,6 @@ public final class Monitoring {
 
         public static final int RAW_KPI_LISTS_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.RawKpiList> rawKpiLists_;
 
         /**
@@ -6312,7 +6573,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpiLists_.size(); i++) {
                 output.writeMessage(1, rawKpiLists_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -6324,7 +6585,7 @@ public final class Monitoring {
             for (int i = 0; i < rawKpiLists_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, rawKpiLists_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -6340,7 +6601,7 @@ public final class Monitoring {
             monitoring.Monitoring.RawKpiTable other = (monitoring.Monitoring.RawKpiTable) obj;
             if (!getRawKpiListsList().equals(other.getRawKpiListsList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -6356,7 +6617,7 @@ public final class Monitoring {
                 hash = (37 * hash) + RAW_KPI_LISTS_FIELD_NUMBER;
                 hash = (53 * hash) + getRawKpiListsList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -6454,23 +6715,29 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.RawKpiTable.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getRawKpiListsFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (rawKpiListsBuilder_ == null) {
                     rawKpiLists_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    rawKpiLists_ = null;
                     rawKpiListsBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -6496,15 +6763,7 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.RawKpiTable buildPartial() {
                 monitoring.Monitoring.RawKpiTable result = new monitoring.Monitoring.RawKpiTable(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.RawKpiTable result) {
+                int from_bitField0_ = bitField0_;
                 if (rawKpiListsBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_);
@@ -6514,10 +6773,38 @@ public final class Monitoring {
                 } else {
                     result.rawKpiLists_ = rawKpiListsBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.RawKpiTable result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -6557,7 +6844,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -6569,47 +6856,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.RawKpiTable parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    monitoring.Monitoring.RawKpiList m = input.readMessage(monitoring.Monitoring.RawKpiList.parser(), extensionRegistry);
-                                    if (rawKpiListsBuilder_ == null) {
-                                        ensureRawKpiListsIsMutable();
-                                        rawKpiLists_.add(m);
-                                    } else {
-                                        rawKpiListsBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.RawKpiTable) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -6879,17 +7136,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public RawKpiTable parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new RawKpiTable(input, extensionRegistry);
             }
         };
 
@@ -6951,6 +7198,57 @@ public final class Monitoring {
             return new KpiId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
         }
@@ -6987,7 +7285,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -7008,7 +7306,7 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(1, getKpiId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -7020,7 +7318,7 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -7040,7 +7338,7 @@ public final class Monitoring {
                 if (!getKpiId().equals(other.getKpiId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -7056,7 +7354,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -7150,19 +7448,26 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
                 return this;
@@ -7190,38 +7495,63 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiId buildPartial() {
                 monitoring.Monitoring.KpiId result = new monitoring.Monitoring.KpiId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.KpiId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
             }
 
             @java.lang.Override
-            public Builder mergeFrom(com.google.protobuf.Message other) {
-                if (other instanceof monitoring.Monitoring.KpiId) {
-                    return mergeFrom((monitoring.Monitoring.KpiId) other);
-                } else {
-                    super.mergeFrom(other);
-                    return this;
-                }
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
             }
 
-            public Builder mergeFrom(monitoring.Monitoring.KpiId other) {
-                if (other == monitoring.Monitoring.KpiId.getDefaultInstance())
-                    return this;
-                if (other.hasKpiId()) {
-                    mergeKpiId(other.getKpiId());
-                }
-                this.mergeUnknownFields(other.getUnknownFields());
-                onChanged();
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.KpiId) {
+                    return mergeFrom((monitoring.Monitoring.KpiId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.KpiId other) {
+                if (other == monitoring.Monitoring.KpiId.getDefaultInstance())
+                    return this;
+                if (other.hasKpiId()) {
+                    mergeKpiId(other.getKpiId());
+                }
+                this.mergeUnknownFields(other.unknownFields);
+                onChanged();
                 return this;
             }
 
@@ -7232,47 +7562,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> kpiIdBuilder_;
@@ -7282,7 +7585,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -7306,11 +7609,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -7320,11 +7622,10 @@ public final class Monitoring {
             public Builder setKpiId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -7333,16 +7634,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(context.ContextOuterClass.Uuid value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = context.ContextOuterClass.Uuid.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -7350,13 +7650,13 @@ public final class Monitoring {
              * <code>.context.Uuid kpi_id = 1;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -7364,7 +7664,6 @@ public final class Monitoring {
              * <code>.context.Uuid kpi_id = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -7418,17 +7717,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiId(input, extensionRegistry);
             }
         };
 
@@ -7524,6 +7813,83 @@ public final class Monitoring {
             return new Kpi();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private Kpi(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (timestamp_ != null) {
+                                    subBuilder = timestamp_.toBuilder();
+                                }
+                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(timestamp_);
+                                    timestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 26:
+                            {
+                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
+                                if (kpiValue_ != null) {
+                                    subBuilder = kpiValue_.toBuilder();
+                                }
+                                kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiValue_);
+                                    kpiValue_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
         }
@@ -7560,7 +7926,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 2;
@@ -7590,7 +7956,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+            return getTimestamp();
         }
 
         public static final int KPI_VALUE_FIELD_NUMBER = 3;
@@ -7620,7 +7986,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+            return getKpiValue();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -7647,7 +8013,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 output.writeMessage(3, getKpiValue());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -7665,7 +8031,7 @@ public final class Monitoring {
             if (kpiValue_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKpiValue());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -7697,7 +8063,7 @@ public final class Monitoring {
                 if (!getKpiValue().equals(other.getKpiValue()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -7721,7 +8087,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiValue().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -7815,29 +8181,38 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.Kpi.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                kpiValue_ = null;
-                if (kpiValueBuilder_ != null) {
-                    kpiValueBuilder_.dispose();
+                if (kpiValueBuilder_ == null) {
+                    kpiValue_ = null;
+                } else {
+                    kpiValue_ = null;
                     kpiValueBuilder_ = null;
                 }
                 return this;
@@ -7865,24 +8240,53 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.Kpi buildPartial() {
                 monitoring.Monitoring.Kpi result = new monitoring.Monitoring.Kpi(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
+                }
+                if (timestampBuilder_ == null) {
+                    result.timestamp_ = timestamp_;
+                } else {
+                    result.timestamp_ = timestampBuilder_.build();
+                }
+                if (kpiValueBuilder_ == null) {
+                    result.kpiValue_ = kpiValue_;
+                } else {
+                    result.kpiValue_ = kpiValueBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.Kpi result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.kpiValue_ = kpiValueBuilder_ == null ? kpiValue_ : kpiValueBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -7907,7 +8311,7 @@ public final class Monitoring {
                 if (other.hasKpiValue()) {
                     mergeKpiValue(other.getKpiValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -7919,61 +8323,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.Kpi parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getKpiValueFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.Kpi) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.KpiId kpiId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
@@ -7983,7 +8346,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -8007,11 +8370,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -8021,11 +8383,10 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -8034,16 +8395,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -8051,13 +8411,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -8065,7 +8425,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 1;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -8101,7 +8460,7 @@ public final class Monitoring {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return timestampBuilder_ != null || timestamp_ != null;
             }
 
             /**
@@ -8125,11 +8484,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -8139,11 +8497,10 @@ public final class Monitoring {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -8152,16 +8509,15 @@ public final class Monitoring {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getTimestampBuilder().mergeFrom(value);
+                    if (timestamp_ != null) {
+                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
                     } else {
                         timestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -8169,13 +8525,13 @@ public final class Monitoring {
              * <code>.context.Timestamp timestamp = 2;</code>
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                    onChanged();
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -8183,7 +8539,6 @@ public final class Monitoring {
              * <code>.context.Timestamp timestamp = 2;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -8219,7 +8574,7 @@ public final class Monitoring {
              * @return Whether the kpiValue field is set.
              */
             public boolean hasKpiValue() {
-                return ((bitField0_ & 0x00000004) != 0);
+                return kpiValueBuilder_ != null || kpiValue_ != null;
             }
 
             /**
@@ -8243,11 +8598,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiValue_ = value;
+                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -8257,11 +8611,10 @@ public final class Monitoring {
             public Builder setKpiValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiValueBuilder_ == null) {
                     kpiValue_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiValueBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -8270,16 +8623,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiValueBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0) && kpiValue_ != null && kpiValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
-                        getKpiValueBuilder().mergeFrom(value);
+                    if (kpiValue_ != null) {
+                        kpiValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
                     } else {
                         kpiValue_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiValueBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -8287,13 +8639,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpi_value = 3;</code>
              */
             public Builder clearKpiValue() {
-                bitField0_ = (bitField0_ & ~0x00000004);
-                kpiValue_ = null;
-                if (kpiValueBuilder_ != null) {
-                    kpiValueBuilder_.dispose();
+                if (kpiValueBuilder_ == null) {
+                    kpiValue_ = null;
+                    onChanged();
+                } else {
+                    kpiValue_ = null;
                     kpiValueBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -8301,7 +8653,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpi_value = 3;</code>
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return getKpiValueFieldBuilder().getBuilder();
             }
@@ -8355,17 +8706,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public Kpi parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new Kpi(input, extensionRegistry);
             }
         };
 
@@ -8474,6 +8815,85 @@ public final class Monitoring {
             return new KpiValueRange();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiValueRange(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
+                                if (kpiMinValue_ != null) {
+                                    subBuilder = kpiMinValue_.toBuilder();
+                                }
+                                kpiMinValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiMinValue_);
+                                    kpiMinValue_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                monitoring.Monitoring.KpiValue.Builder subBuilder = null;
+                                if (kpiMaxValue_ != null) {
+                                    subBuilder = kpiMaxValue_.toBuilder();
+                                }
+                                kpiMaxValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiMaxValue_);
+                                    kpiMaxValue_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 24:
+                            {
+                                inRange_ = input.readBool();
+                                break;
+                            }
+                        case 32:
+                            {
+                                includeMinValue_ = input.readBool();
+                                break;
+                            }
+                        case 40:
+                            {
+                                includeMaxValue_ = input.readBool();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
         }
@@ -8510,7 +8930,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder() {
-            return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
+            return getKpiMinValue();
         }
 
         public static final int KPIMAXVALUE_FIELD_NUMBER = 2;
@@ -8540,12 +8960,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder() {
-            return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
+            return getKpiMaxValue();
         }
 
         public static final int INRANGE_FIELD_NUMBER = 3;
 
-        private boolean inRange_ = false;
+        private boolean inRange_;
 
         /**
          * <pre>
@@ -8562,7 +8982,7 @@ public final class Monitoring {
 
         public static final int INCLUDEMINVALUE_FIELD_NUMBER = 4;
 
-        private boolean includeMinValue_ = false;
+        private boolean includeMinValue_;
 
         /**
          * <pre>
@@ -8579,7 +8999,7 @@ public final class Monitoring {
 
         public static final int INCLUDEMAXVALUE_FIELD_NUMBER = 5;
 
-        private boolean includeMaxValue_ = false;
+        private boolean includeMaxValue_;
 
         /**
          * <pre>
@@ -8624,7 +9044,7 @@ public final class Monitoring {
             if (includeMaxValue_ != false) {
                 output.writeBool(5, includeMaxValue_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -8648,7 +9068,7 @@ public final class Monitoring {
             if (includeMaxValue_ != false) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(5, includeMaxValue_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -8680,7 +9100,7 @@ public final class Monitoring {
                 return false;
             if (getIncludeMaxValue() != other.getIncludeMaxValue())
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -8706,7 +9126,7 @@ public final class Monitoring {
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeMinValue());
             hash = (37 * hash) + INCLUDEMAXVALUE_FIELD_NUMBER;
             hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeMaxValue());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -8800,24 +9220,32 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiValueRange.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                kpiMinValue_ = null;
-                if (kpiMinValueBuilder_ != null) {
-                    kpiMinValueBuilder_.dispose();
+                if (kpiMinValueBuilder_ == null) {
+                    kpiMinValue_ = null;
+                } else {
+                    kpiMinValue_ = null;
                     kpiMinValueBuilder_ = null;
                 }
-                kpiMaxValue_ = null;
-                if (kpiMaxValueBuilder_ != null) {
-                    kpiMaxValueBuilder_.dispose();
+                if (kpiMaxValueBuilder_ == null) {
+                    kpiMaxValue_ = null;
+                } else {
+                    kpiMaxValue_ = null;
                     kpiMaxValueBuilder_ = null;
                 }
                 inRange_ = false;
@@ -8848,30 +9276,51 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiValueRange buildPartial() {
                 monitoring.Monitoring.KpiValueRange result = new monitoring.Monitoring.KpiValueRange(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (kpiMinValueBuilder_ == null) {
+                    result.kpiMinValue_ = kpiMinValue_;
+                } else {
+                    result.kpiMinValue_ = kpiMinValueBuilder_.build();
                 }
+                if (kpiMaxValueBuilder_ == null) {
+                    result.kpiMaxValue_ = kpiMaxValue_;
+                } else {
+                    result.kpiMaxValue_ = kpiMaxValueBuilder_.build();
+                }
+                result.inRange_ = inRange_;
+                result.includeMinValue_ = includeMinValue_;
+                result.includeMaxValue_ = includeMaxValue_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.KpiValueRange result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.kpiMinValue_ = kpiMinValueBuilder_ == null ? kpiMinValue_ : kpiMinValueBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.kpiMaxValue_ = kpiMaxValueBuilder_ == null ? kpiMaxValue_ : kpiMaxValueBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.inRange_ = inRange_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.includeMinValue_ = includeMinValue_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.includeMaxValue_ = includeMaxValue_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -8902,7 +9351,7 @@ public final class Monitoring {
                 if (other.getIncludeMaxValue() != false) {
                     setIncludeMaxValue(other.getIncludeMaxValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -8914,75 +9363,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiValueRange parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getKpiMinValueFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getKpiMaxValueFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 24:
-                                {
-                                    inRange_ = input.readBool();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    includeMinValue_ = input.readBool();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 32
-                            case 40:
-                                {
-                                    includeMaxValue_ = input.readBool();
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 40
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiValueRange) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.KpiValue kpiMinValue_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiMinValueBuilder_;
@@ -8992,7 +9386,7 @@ public final class Monitoring {
              * @return Whether the kpiMinValue field is set.
              */
             public boolean hasKpiMinValue() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return kpiMinValueBuilder_ != null || kpiMinValue_ != null;
             }
 
             /**
@@ -9016,11 +9410,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiMinValue_ = value;
+                    onChanged();
                 } else {
                     kpiMinValueBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -9030,11 +9423,10 @@ public final class Monitoring {
             public Builder setKpiMinValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiMinValueBuilder_ == null) {
                     kpiMinValue_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiMinValueBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -9043,16 +9435,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiMinValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiMinValueBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && kpiMinValue_ != null && kpiMinValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
-                        getKpiMinValueBuilder().mergeFrom(value);
+                    if (kpiMinValue_ != null) {
+                        kpiMinValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiMinValue_).mergeFrom(value).buildPartial();
                     } else {
                         kpiMinValue_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiMinValueBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -9060,13 +9451,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
              */
             public Builder clearKpiMinValue() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                kpiMinValue_ = null;
-                if (kpiMinValueBuilder_ != null) {
-                    kpiMinValueBuilder_.dispose();
+                if (kpiMinValueBuilder_ == null) {
+                    kpiMinValue_ = null;
+                    onChanged();
+                } else {
+                    kpiMinValue_ = null;
                     kpiMinValueBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -9074,7 +9465,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiMinValueBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getKpiMinValueFieldBuilder().getBuilder();
             }
@@ -9110,7 +9500,7 @@ public final class Monitoring {
              * @return Whether the kpiMaxValue field is set.
              */
             public boolean hasKpiMaxValue() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return kpiMaxValueBuilder_ != null || kpiMaxValue_ != null;
             }
 
             /**
@@ -9134,11 +9524,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiMaxValue_ = value;
+                    onChanged();
                 } else {
                     kpiMaxValueBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -9148,11 +9537,10 @@ public final class Monitoring {
             public Builder setKpiMaxValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
                 if (kpiMaxValueBuilder_ == null) {
                     kpiMaxValue_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiMaxValueBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -9161,16 +9549,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiMaxValue(monitoring.Monitoring.KpiValue value) {
                 if (kpiMaxValueBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && kpiMaxValue_ != null && kpiMaxValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
-                        getKpiMaxValueBuilder().mergeFrom(value);
+                    if (kpiMaxValue_ != null) {
+                        kpiMaxValue_ = monitoring.Monitoring.KpiValue.newBuilder(kpiMaxValue_).mergeFrom(value).buildPartial();
                     } else {
                         kpiMaxValue_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiMaxValueBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -9178,13 +9565,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
              */
             public Builder clearKpiMaxValue() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                kpiMaxValue_ = null;
-                if (kpiMaxValueBuilder_ != null) {
-                    kpiMaxValueBuilder_.dispose();
+                if (kpiMaxValueBuilder_ == null) {
+                    kpiMaxValue_ = null;
+                    onChanged();
+                } else {
+                    kpiMaxValue_ = null;
                     kpiMaxValueBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -9192,7 +9579,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
              */
             public monitoring.Monitoring.KpiValue.Builder getKpiMaxValueBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiMaxValueFieldBuilder().getBuilder();
             }
@@ -9245,7 +9631,6 @@ public final class Monitoring {
              */
             public Builder setInRange(boolean value) {
                 inRange_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -9259,7 +9644,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearInRange() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 inRange_ = false;
                 onChanged();
                 return this;
@@ -9291,7 +9675,6 @@ public final class Monitoring {
              */
             public Builder setIncludeMinValue(boolean value) {
                 includeMinValue_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -9305,7 +9688,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearIncludeMinValue() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 includeMinValue_ = false;
                 onChanged();
                 return this;
@@ -9337,7 +9719,6 @@ public final class Monitoring {
              */
             public Builder setIncludeMaxValue(boolean value) {
                 includeMaxValue_ = value;
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return this;
             }
@@ -9351,7 +9732,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearIncludeMaxValue() {
-                bitField0_ = (bitField0_ & ~0x00000010);
                 includeMaxValue_ = false;
                 onChanged();
                 return this;
@@ -9384,17 +9764,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiValueRange parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiValueRange(input, extensionRegistry);
             }
         };
 
@@ -9506,7 +9876,7 @@ public final class Monitoring {
          */
         boolean getBoolVal();
 
-        monitoring.Monitoring.KpiValue.ValueCase getValueCase();
+        public monitoring.Monitoring.KpiValue.ValueCase getValueCase();
     }
 
     /**
@@ -9531,6 +9901,87 @@ public final class Monitoring {
             return new KpiValue();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiValue(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 8:
+                            {
+                                valueCase_ = 1;
+                                value_ = input.readInt32();
+                                break;
+                            }
+                        case 16:
+                            {
+                                valueCase_ = 2;
+                                value_ = input.readUInt32();
+                                break;
+                            }
+                        case 24:
+                            {
+                                valueCase_ = 3;
+                                value_ = input.readInt64();
+                                break;
+                            }
+                        case 32:
+                            {
+                                valueCase_ = 4;
+                                value_ = input.readUInt64();
+                                break;
+                            }
+                        case 45:
+                            {
+                                valueCase_ = 5;
+                                value_ = input.readFloat();
+                                break;
+                            }
+                        case 50:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                valueCase_ = 6;
+                                value_ = s;
+                                break;
+                            }
+                        case 56:
+                            {
+                                valueCase_ = 7;
+                                value_ = input.readBool();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
         }
@@ -9542,7 +9993,6 @@ public final class Monitoring {
 
         private int valueCase_ = 0;
 
-        @SuppressWarnings("serial")
         private java.lang.Object value_;
 
         public enum ValueCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
@@ -9829,7 +10279,7 @@ public final class Monitoring {
             if (valueCase_ == 7) {
                 output.writeBool(7, (boolean) ((java.lang.Boolean) value_));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -9859,7 +10309,7 @@ public final class Monitoring {
             if (valueCase_ == 7) {
                 size += com.google.protobuf.CodedOutputStream.computeBoolSize(7, (boolean) ((java.lang.Boolean) value_));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -9907,7 +10357,7 @@ public final class Monitoring {
                 case 0:
                 default:
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -9951,7 +10401,7 @@ public final class Monitoring {
                 case 0:
                 default:
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -10045,16 +10495,22 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiValue.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 valueCase_ = 0;
                 value_ = null;
                 return this;
@@ -10082,21 +10538,60 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiValue buildPartial() {
                 monitoring.Monitoring.KpiValue result = new monitoring.Monitoring.KpiValue(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (valueCase_ == 1) {
+                    result.value_ = value_;
+                }
+                if (valueCase_ == 2) {
+                    result.value_ = value_;
+                }
+                if (valueCase_ == 3) {
+                    result.value_ = value_;
+                }
+                if (valueCase_ == 4) {
+                    result.value_ = value_;
+                }
+                if (valueCase_ == 5) {
+                    result.value_ = value_;
+                }
+                if (valueCase_ == 6) {
+                    result.value_ = value_;
+                }
+                if (valueCase_ == 7) {
+                    result.value_ = value_;
                 }
-                buildPartialOneofs(result);
+                result.valueCase_ = valueCase_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.KpiValue result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
             }
 
-            private void buildPartialOneofs(monitoring.Monitoring.KpiValue result) {
-                result.valueCase_ = valueCase_;
-                result.value_ = this.value_;
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -10155,7 +10650,7 @@ public final class Monitoring {
                             break;
                         }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -10167,85 +10662,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiValue parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 8:
-                                {
-                                    value_ = input.readInt32();
-                                    valueCase_ = 1;
-                                    break;
-                                }
-                            // case 8
-                            case 16:
-                                {
-                                    value_ = input.readUInt32();
-                                    valueCase_ = 2;
-                                    break;
-                                }
-                            // case 16
-                            case 24:
-                                {
-                                    value_ = input.readInt64();
-                                    valueCase_ = 3;
-                                    break;
-                                }
-                            // case 24
-                            case 32:
-                                {
-                                    value_ = input.readUInt64();
-                                    valueCase_ = 4;
-                                    break;
-                                }
-                            // case 32
-                            case 45:
-                                {
-                                    value_ = input.readFloat();
-                                    valueCase_ = 5;
-                                    break;
-                                }
-                            // case 45
-                            case 50:
-                                {
-                                    java.lang.String s = input.readStringRequireUtf8();
-                                    valueCase_ = 6;
-                                    value_ = s;
-                                    break;
-                                }
-                            // case 50
-                            case 56:
-                                {
-                                    value_ = input.readBool();
-                                    valueCase_ = 7;
-                                    break;
-                                }
-                            // case 56
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiValue) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -10264,8 +10691,6 @@ public final class Monitoring {
                 return this;
             }
 
-            private int bitField0_;
-
             /**
              * <code>int32 int32Val = 1;</code>
              * @return Whether the int32Val field is set.
@@ -10653,17 +11078,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiValue parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiValue(input, extensionRegistry);
             }
         };
 
@@ -10734,6 +11149,57 @@ public final class Monitoring {
             return new KpiList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    kpi_ = new java.util.ArrayList<monitoring.Monitoring.Kpi>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                kpi_.add(input.readMessage(monitoring.Monitoring.Kpi.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    kpi_ = java.util.Collections.unmodifiableList(kpi_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
         }
@@ -10745,7 +11211,6 @@ public final class Monitoring {
 
         public static final int KPI_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.Kpi> kpi_;
 
         /**
@@ -10806,7 +11271,7 @@ public final class Monitoring {
             for (int i = 0; i < kpi_.size(); i++) {
                 output.writeMessage(1, kpi_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -10818,7 +11283,7 @@ public final class Monitoring {
             for (int i = 0; i < kpi_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpi_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -10834,7 +11299,7 @@ public final class Monitoring {
             monitoring.Monitoring.KpiList other = (monitoring.Monitoring.KpiList) obj;
             if (!getKpiList().equals(other.getKpiList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -10850,7 +11315,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -10944,23 +11409,29 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getKpiFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (kpiBuilder_ == null) {
                     kpi_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    kpi_ = null;
                     kpiBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -10986,15 +11457,7 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiList buildPartial() {
                 monitoring.Monitoring.KpiList result = new monitoring.Monitoring.KpiList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiList result) {
+                int from_bitField0_ = bitField0_;
                 if (kpiBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         kpi_ = java.util.Collections.unmodifiableList(kpi_);
@@ -11004,10 +11467,38 @@ public final class Monitoring {
                 } else {
                     result.kpi_ = kpiBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.KpiList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -11047,7 +11538,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -11059,47 +11550,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    monitoring.Monitoring.Kpi m = input.readMessage(monitoring.Monitoring.Kpi.parser(), extensionRegistry);
-                                    if (kpiBuilder_ == null) {
-                                        ensureKpiIsMutable();
-                                        kpi_.add(m);
-                                    } else {
-                                        kpiBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -11369,17 +11830,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiList(input, extensionRegistry);
             }
         };
 
@@ -11450,6 +11901,57 @@ public final class Monitoring {
             return new KpiDescriptorList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private KpiDescriptorList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    kpiDescriptorList_ = new java.util.ArrayList<monitoring.Monitoring.KpiDescriptor>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                kpiDescriptorList_.add(input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
         }
@@ -11461,7 +11963,6 @@ public final class Monitoring {
 
         public static final int KPI_DESCRIPTOR_LIST_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.KpiDescriptor> kpiDescriptorList_;
 
         /**
@@ -11522,7 +12023,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiDescriptorList_.size(); i++) {
                 output.writeMessage(1, kpiDescriptorList_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -11534,7 +12035,7 @@ public final class Monitoring {
             for (int i = 0; i < kpiDescriptorList_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpiDescriptorList_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -11550,7 +12051,7 @@ public final class Monitoring {
             monitoring.Monitoring.KpiDescriptorList other = (monitoring.Monitoring.KpiDescriptorList) obj;
             if (!getKpiDescriptorListList().equals(other.getKpiDescriptorListList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -11566,7 +12067,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_DESCRIPTOR_LIST_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiDescriptorListList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -11660,23 +12161,29 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.KpiDescriptorList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getKpiDescriptorListFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (kpiDescriptorListBuilder_ == null) {
                     kpiDescriptorList_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    kpiDescriptorList_ = null;
                     kpiDescriptorListBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -11702,15 +12209,7 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.KpiDescriptorList buildPartial() {
                 monitoring.Monitoring.KpiDescriptorList result = new monitoring.Monitoring.KpiDescriptorList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiDescriptorList result) {
+                int from_bitField0_ = bitField0_;
                 if (kpiDescriptorListBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
@@ -11720,10 +12219,38 @@ public final class Monitoring {
                 } else {
                     result.kpiDescriptorList_ = kpiDescriptorListBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.KpiDescriptorList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -11763,7 +12290,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -11775,47 +12302,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.KpiDescriptorList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    monitoring.Monitoring.KpiDescriptor m = input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry);
-                                    if (kpiDescriptorListBuilder_ == null) {
-                                        ensureKpiDescriptorListIsMutable();
-                                        kpiDescriptorList_.add(m);
-                                    } else {
-                                        kpiDescriptorListBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.KpiDescriptorList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -12085,17 +12582,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public KpiDescriptorList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new KpiDescriptorList(input, extensionRegistry);
             }
         };
 
@@ -12244,6 +12731,106 @@ public final class Monitoring {
             return new SubsDescriptor();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SubsDescriptor(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.SubscriptionID.Builder subBuilder = null;
+                                if (subsId_ != null) {
+                                    subBuilder = subsId_.toBuilder();
+                                }
+                                subsId_ = input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(subsId_);
+                                    subsId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 29:
+                            {
+                                samplingDurationS_ = input.readFloat();
+                                break;
+                            }
+                        case 37:
+                            {
+                                samplingIntervalS_ = input.readFloat();
+                                break;
+                            }
+                        case 42:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (startTimestamp_ != null) {
+                                    subBuilder = startTimestamp_.toBuilder();
+                                }
+                                startTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(startTimestamp_);
+                                    startTimestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 50:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (endTimestamp_ != null) {
+                                    subBuilder = endTimestamp_.toBuilder();
+                                }
+                                endTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(endTimestamp_);
+                                    endTimestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
         }
@@ -12280,7 +12867,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-            return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+            return getSubsId();
         }
 
         public static final int KPI_ID_FIELD_NUMBER = 2;
@@ -12310,12 +12897,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 3;
 
-        private float samplingDurationS_ = 0F;
+        private float samplingDurationS_;
 
         /**
          * <code>float sampling_duration_s = 3;</code>
@@ -12328,7 +12915,7 @@ public final class Monitoring {
 
         public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 4;
 
-        private float samplingIntervalS_ = 0F;
+        private float samplingIntervalS_;
 
         /**
          * <code>float sampling_interval_s = 4;</code>
@@ -12378,7 +12965,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
-            return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+            return getStartTimestamp();
         }
 
         public static final int END_TIMESTAMP_FIELD_NUMBER = 6;
@@ -12420,7 +13007,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
-            return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+            return getEndTimestamp();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -12444,10 +13031,10 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 output.writeMessage(2, getKpiId());
             }
-            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
+            if (samplingDurationS_ != 0F) {
                 output.writeFloat(3, samplingDurationS_);
             }
-            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
+            if (samplingIntervalS_ != 0F) {
                 output.writeFloat(4, samplingIntervalS_);
             }
             if (startTimestamp_ != null) {
@@ -12456,7 +13043,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 output.writeMessage(6, getEndTimestamp());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -12471,10 +13058,10 @@ public final class Monitoring {
             if (kpiId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiId());
             }
-            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
+            if (samplingDurationS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingDurationS_);
             }
-            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
+            if (samplingIntervalS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(4, samplingIntervalS_);
             }
             if (startTimestamp_ != null) {
@@ -12483,7 +13070,7 @@ public final class Monitoring {
             if (endTimestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getEndTimestamp());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -12525,7 +13112,7 @@ public final class Monitoring {
                 if (!getEndTimestamp().equals(other.getEndTimestamp()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -12557,7 +13144,7 @@ public final class Monitoring {
                 hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getEndTimestamp().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -12651,36 +13238,46 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubsDescriptor.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                subsId_ = null;
-                if (subsIdBuilder_ != null) {
-                    subsIdBuilder_.dispose();
+                if (subsIdBuilder_ == null) {
+                    subsId_ = null;
+                } else {
+                    subsId_ = null;
                     subsIdBuilder_ = null;
                 }
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
                 samplingDurationS_ = 0F;
                 samplingIntervalS_ = 0F;
-                startTimestamp_ = null;
-                if (startTimestampBuilder_ != null) {
-                    startTimestampBuilder_.dispose();
+                if (startTimestampBuilder_ == null) {
+                    startTimestamp_ = null;
+                } else {
+                    startTimestamp_ = null;
                     startTimestampBuilder_ = null;
                 }
-                endTimestamp_ = null;
-                if (endTimestampBuilder_ != null) {
-                    endTimestampBuilder_.dispose();
+                if (endTimestampBuilder_ == null) {
+                    endTimestamp_ = null;
+                } else {
+                    endTimestamp_ = null;
                     endTimestampBuilder_ = null;
                 }
                 return this;
@@ -12708,33 +13305,60 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubsDescriptor buildPartial() {
                 monitoring.Monitoring.SubsDescriptor result = new monitoring.Monitoring.SubsDescriptor(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (subsIdBuilder_ == null) {
+                    result.subsId_ = subsId_;
+                } else {
+                    result.subsId_ = subsIdBuilder_.build();
+                }
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
+                }
+                result.samplingDurationS_ = samplingDurationS_;
+                result.samplingIntervalS_ = samplingIntervalS_;
+                if (startTimestampBuilder_ == null) {
+                    result.startTimestamp_ = startTimestamp_;
+                } else {
+                    result.startTimestamp_ = startTimestampBuilder_.build();
+                }
+                if (endTimestampBuilder_ == null) {
+                    result.endTimestamp_ = endTimestamp_;
+                } else {
+                    result.endTimestamp_ = endTimestampBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.SubsDescriptor result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.samplingDurationS_ = samplingDurationS_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.samplingIntervalS_ = samplingIntervalS_;
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.startTimestamp_ = startTimestampBuilder_ == null ? startTimestamp_ : startTimestampBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.endTimestamp_ = endTimestampBuilder_ == null ? endTimestamp_ : endTimestampBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -12768,7 +13392,7 @@ public final class Monitoring {
                 if (other.hasEndTimestamp()) {
                     mergeEndTimestamp(other.getEndTimestamp());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -12780,82 +13404,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.SubsDescriptor parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 29:
-                                {
-                                    samplingDurationS_ = input.readFloat();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 29
-                            case 37:
-                                {
-                                    samplingIntervalS_ = input.readFloat();
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 37
-                            case 42:
-                                {
-                                    input.readMessage(getStartTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    input.readMessage(getEndTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 50
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.SubsDescriptor) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.SubscriptionID subsId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsIdBuilder_;
@@ -12865,7 +13427,7 @@ public final class Monitoring {
              * @return Whether the subsId field is set.
              */
             public boolean hasSubsId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return subsIdBuilder_ != null || subsId_ != null;
             }
 
             /**
@@ -12889,11 +13451,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     subsId_ = value;
+                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -12903,11 +13464,10 @@ public final class Monitoring {
             public Builder setSubsId(monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
                 if (subsIdBuilder_ == null) {
                     subsId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -12916,16 +13476,15 @@ public final class Monitoring {
              */
             public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
                 if (subsIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != monitoring.Monitoring.SubscriptionID.getDefaultInstance()) {
-                        getSubsIdBuilder().mergeFrom(value);
+                    if (subsId_ != null) {
+                        subsId_ = monitoring.Monitoring.SubscriptionID.newBuilder(subsId_).mergeFrom(value).buildPartial();
                     } else {
                         subsId_ = value;
                     }
+                    onChanged();
                 } else {
                     subsIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -12933,13 +13492,13 @@ public final class Monitoring {
              * <code>.monitoring.SubscriptionID subs_id = 1;</code>
              */
             public Builder clearSubsId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                subsId_ = null;
-                if (subsIdBuilder_ != null) {
-                    subsIdBuilder_.dispose();
+                if (subsIdBuilder_ == null) {
+                    subsId_ = null;
+                    onChanged();
+                } else {
+                    subsId_ = null;
                     subsIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -12947,7 +13506,6 @@ public final class Monitoring {
              * <code>.monitoring.SubscriptionID subs_id = 1;</code>
              */
             public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSubsIdFieldBuilder().getBuilder();
             }
@@ -12983,7 +13541,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -13007,11 +13565,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -13021,11 +13578,10 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -13034,16 +13590,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -13051,13 +13606,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 2;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -13065,7 +13620,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 2;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -13110,7 +13664,6 @@ public final class Monitoring {
              */
             public Builder setSamplingDurationS(float value) {
                 samplingDurationS_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -13120,7 +13673,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSamplingDurationS() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 samplingDurationS_ = 0F;
                 onChanged();
                 return this;
@@ -13144,7 +13696,6 @@ public final class Monitoring {
              */
             public Builder setSamplingIntervalS(float value) {
                 samplingIntervalS_ = value;
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return this;
             }
@@ -13154,7 +13705,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSamplingIntervalS() {
-                bitField0_ = (bitField0_ & ~0x00000008);
                 samplingIntervalS_ = 0F;
                 onChanged();
                 return this;
@@ -13173,7 +13723,7 @@ public final class Monitoring {
              * @return Whether the startTimestamp field is set.
              */
             public boolean hasStartTimestamp() {
-                return ((bitField0_ & 0x00000010) != 0);
+                return startTimestampBuilder_ != null || startTimestamp_ != null;
             }
 
             /**
@@ -13205,11 +13755,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     startTimestamp_ = value;
+                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -13223,11 +13772,10 @@ public final class Monitoring {
             public Builder setStartTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (startTimestampBuilder_ == null) {
                     startTimestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     startTimestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -13240,16 +13788,15 @@ public final class Monitoring {
              */
             public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (startTimestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0) && startTimestamp_ != null && startTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getStartTimestampBuilder().mergeFrom(value);
+                    if (startTimestamp_ != null) {
+                        startTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(startTimestamp_).mergeFrom(value).buildPartial();
                     } else {
                         startTimestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     startTimestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -13261,13 +13808,13 @@ public final class Monitoring {
              * <code>.context.Timestamp start_timestamp = 5;</code>
              */
             public Builder clearStartTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000010);
-                startTimestamp_ = null;
-                if (startTimestampBuilder_ != null) {
-                    startTimestampBuilder_.dispose();
+                if (startTimestampBuilder_ == null) {
+                    startTimestamp_ = null;
+                    onChanged();
+                } else {
+                    startTimestamp_ = null;
                     startTimestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -13279,7 +13826,6 @@ public final class Monitoring {
              * <code>.context.Timestamp start_timestamp = 5;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return getStartTimestampFieldBuilder().getBuilder();
             }
@@ -13327,7 +13873,7 @@ public final class Monitoring {
              * @return Whether the endTimestamp field is set.
              */
             public boolean hasEndTimestamp() {
-                return ((bitField0_ & 0x00000020) != 0);
+                return endTimestampBuilder_ != null || endTimestamp_ != null;
             }
 
             /**
@@ -13359,11 +13905,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     endTimestamp_ = value;
+                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -13377,11 +13922,10 @@ public final class Monitoring {
             public Builder setEndTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (endTimestampBuilder_ == null) {
                     endTimestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     endTimestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -13394,16 +13938,15 @@ public final class Monitoring {
              */
             public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (endTimestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000020) != 0) && endTimestamp_ != null && endTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getEndTimestampBuilder().mergeFrom(value);
+                    if (endTimestamp_ != null) {
+                        endTimestamp_ = context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
                     } else {
                         endTimestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     endTimestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -13415,13 +13958,13 @@ public final class Monitoring {
              * <code>.context.Timestamp end_timestamp = 6;</code>
              */
             public Builder clearEndTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000020);
-                endTimestamp_ = null;
-                if (endTimestampBuilder_ != null) {
-                    endTimestampBuilder_.dispose();
+                if (endTimestampBuilder_ == null) {
+                    endTimestamp_ = null;
+                    onChanged();
+                } else {
+                    endTimestamp_ = null;
                     endTimestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -13433,7 +13976,6 @@ public final class Monitoring {
              * <code>.context.Timestamp end_timestamp = 6;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return getEndTimestampFieldBuilder().getBuilder();
             }
@@ -13495,17 +14037,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubsDescriptor parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SubsDescriptor(input, extensionRegistry);
             }
         };
 
@@ -13567,6 +14099,57 @@ public final class Monitoring {
             return new SubscriptionID();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SubscriptionID(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (subsId_ != null) {
+                                    subBuilder = subsId_.toBuilder();
+                                }
+                                subsId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(subsId_);
+                                    subsId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
         }
@@ -13603,7 +14186,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder() {
-            return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
+            return getSubsId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -13624,7 +14207,7 @@ public final class Monitoring {
             if (subsId_ != null) {
                 output.writeMessage(1, getSubsId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -13636,7 +14219,7 @@ public final class Monitoring {
             if (subsId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSubsId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -13656,7 +14239,7 @@ public final class Monitoring {
                 if (!getSubsId().equals(other.getSubsId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -13672,7 +14255,7 @@ public final class Monitoring {
                 hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getSubsId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -13766,19 +14349,26 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubscriptionID.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                subsId_ = null;
-                if (subsIdBuilder_ != null) {
-                    subsIdBuilder_.dispose();
+                if (subsIdBuilder_ == null) {
+                    subsId_ = null;
+                } else {
+                    subsId_ = null;
                     subsIdBuilder_ = null;
                 }
                 return this;
@@ -13806,18 +14396,43 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubscriptionID buildPartial() {
                 monitoring.Monitoring.SubscriptionID result = new monitoring.Monitoring.SubscriptionID(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (subsIdBuilder_ == null) {
+                    result.subsId_ = subsId_;
+                } else {
+                    result.subsId_ = subsIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.SubscriptionID result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -13836,7 +14451,7 @@ public final class Monitoring {
                 if (other.hasSubsId()) {
                     mergeSubsId(other.getSubsId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -13848,47 +14463,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.SubscriptionID parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.SubscriptionID) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid subsId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> subsIdBuilder_;
@@ -13898,7 +14486,7 @@ public final class Monitoring {
              * @return Whether the subsId field is set.
              */
             public boolean hasSubsId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return subsIdBuilder_ != null || subsId_ != null;
             }
 
             /**
@@ -13922,11 +14510,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     subsId_ = value;
+                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -13936,11 +14523,10 @@ public final class Monitoring {
             public Builder setSubsId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (subsIdBuilder_ == null) {
                     subsId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -13949,16 +14535,15 @@ public final class Monitoring {
              */
             public Builder mergeSubsId(context.ContextOuterClass.Uuid value) {
                 if (subsIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getSubsIdBuilder().mergeFrom(value);
+                    if (subsId_ != null) {
+                        subsId_ = context.ContextOuterClass.Uuid.newBuilder(subsId_).mergeFrom(value).buildPartial();
                     } else {
                         subsId_ = value;
                     }
+                    onChanged();
                 } else {
                     subsIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -13966,13 +14551,13 @@ public final class Monitoring {
              * <code>.context.Uuid subs_id = 1;</code>
              */
             public Builder clearSubsId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                subsId_ = null;
-                if (subsIdBuilder_ != null) {
-                    subsIdBuilder_.dispose();
+                if (subsIdBuilder_ == null) {
+                    subsId_ = null;
+                    onChanged();
+                } else {
+                    subsId_ = null;
                     subsIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -13980,7 +14565,6 @@ public final class Monitoring {
              * <code>.context.Uuid subs_id = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getSubsIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSubsIdFieldBuilder().getBuilder();
             }
@@ -14034,17 +14618,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubscriptionID parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SubscriptionID(input, extensionRegistry);
             }
         };
 
@@ -14123,6 +14697,70 @@ public final class Monitoring {
             return new SubsResponse();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SubsResponse(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.SubscriptionID.Builder subBuilder = null;
+                                if (subsId_ != null) {
+                                    subBuilder = subsId_.toBuilder();
+                                }
+                                subsId_ = input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(subsId_);
+                                    subsId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                monitoring.Monitoring.KpiList.Builder subBuilder = null;
+                                if (kpiList_ != null) {
+                                    subBuilder = kpiList_.toBuilder();
+                                }
+                                kpiList_ = input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiList_);
+                                    kpiList_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
         }
@@ -14159,7 +14797,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-            return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+            return getSubsId();
         }
 
         public static final int KPI_LIST_FIELD_NUMBER = 2;
@@ -14189,7 +14827,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
-            return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
+            return getKpiList();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -14213,7 +14851,7 @@ public final class Monitoring {
             if (kpiList_ != null) {
                 output.writeMessage(2, getKpiList());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -14228,7 +14866,7 @@ public final class Monitoring {
             if (kpiList_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiList());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -14254,7 +14892,7 @@ public final class Monitoring {
                 if (!getKpiList().equals(other.getKpiList()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -14274,7 +14912,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -14368,24 +15006,32 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubsResponse.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                subsId_ = null;
-                if (subsIdBuilder_ != null) {
-                    subsIdBuilder_.dispose();
+                if (subsIdBuilder_ == null) {
+                    subsId_ = null;
+                } else {
+                    subsId_ = null;
                     subsIdBuilder_ = null;
                 }
-                kpiList_ = null;
-                if (kpiListBuilder_ != null) {
-                    kpiListBuilder_.dispose();
+                if (kpiListBuilder_ == null) {
+                    kpiList_ = null;
+                } else {
+                    kpiList_ = null;
                     kpiListBuilder_ = null;
                 }
                 return this;
@@ -14413,21 +15059,48 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubsResponse buildPartial() {
                 monitoring.Monitoring.SubsResponse result = new monitoring.Monitoring.SubsResponse(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (subsIdBuilder_ == null) {
+                    result.subsId_ = subsId_;
+                } else {
+                    result.subsId_ = subsIdBuilder_.build();
+                }
+                if (kpiListBuilder_ == null) {
+                    result.kpiList_ = kpiList_;
+                } else {
+                    result.kpiList_ = kpiListBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.SubsResponse result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.kpiList_ = kpiListBuilder_ == null ? kpiList_ : kpiListBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -14449,7 +15122,7 @@ public final class Monitoring {
                 if (other.hasKpiList()) {
                     mergeKpiList(other.getKpiList());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -14461,54 +15134,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.SubsResponse parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getKpiListFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.SubsResponse) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.SubscriptionID subsId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsIdBuilder_;
@@ -14518,7 +15157,7 @@ public final class Monitoring {
              * @return Whether the subsId field is set.
              */
             public boolean hasSubsId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return subsIdBuilder_ != null || subsId_ != null;
             }
 
             /**
@@ -14542,11 +15181,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     subsId_ = value;
+                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -14556,11 +15194,10 @@ public final class Monitoring {
             public Builder setSubsId(monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
                 if (subsIdBuilder_ == null) {
                     subsId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     subsIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -14569,16 +15206,15 @@ public final class Monitoring {
              */
             public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
                 if (subsIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != monitoring.Monitoring.SubscriptionID.getDefaultInstance()) {
-                        getSubsIdBuilder().mergeFrom(value);
+                    if (subsId_ != null) {
+                        subsId_ = monitoring.Monitoring.SubscriptionID.newBuilder(subsId_).mergeFrom(value).buildPartial();
                     } else {
                         subsId_ = value;
                     }
+                    onChanged();
                 } else {
                     subsIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -14586,13 +15222,13 @@ public final class Monitoring {
              * <code>.monitoring.SubscriptionID subs_id = 1;</code>
              */
             public Builder clearSubsId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                subsId_ = null;
-                if (subsIdBuilder_ != null) {
-                    subsIdBuilder_.dispose();
+                if (subsIdBuilder_ == null) {
+                    subsId_ = null;
+                    onChanged();
+                } else {
+                    subsId_ = null;
                     subsIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -14600,7 +15236,6 @@ public final class Monitoring {
              * <code>.monitoring.SubscriptionID subs_id = 1;</code>
              */
             public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getSubsIdFieldBuilder().getBuilder();
             }
@@ -14636,7 +15271,7 @@ public final class Monitoring {
              * @return Whether the kpiList field is set.
              */
             public boolean hasKpiList() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return kpiListBuilder_ != null || kpiList_ != null;
             }
 
             /**
@@ -14660,11 +15295,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiList_ = value;
+                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -14674,11 +15308,10 @@ public final class Monitoring {
             public Builder setKpiList(monitoring.Monitoring.KpiList.Builder builderForValue) {
                 if (kpiListBuilder_ == null) {
                     kpiList_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -14687,16 +15320,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiList(monitoring.Monitoring.KpiList value) {
                 if (kpiListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && kpiList_ != null && kpiList_ != monitoring.Monitoring.KpiList.getDefaultInstance()) {
-                        getKpiListBuilder().mergeFrom(value);
+                    if (kpiList_ != null) {
+                        kpiList_ = monitoring.Monitoring.KpiList.newBuilder(kpiList_).mergeFrom(value).buildPartial();
                     } else {
                         kpiList_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiListBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -14704,13 +15336,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiList kpi_list = 2;</code>
              */
             public Builder clearKpiList() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                kpiList_ = null;
-                if (kpiListBuilder_ != null) {
-                    kpiListBuilder_.dispose();
+                if (kpiListBuilder_ == null) {
+                    kpiList_ = null;
+                    onChanged();
+                } else {
+                    kpiList_ = null;
                     kpiListBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -14718,7 +15350,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiList kpi_list = 2;</code>
              */
             public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getKpiListFieldBuilder().getBuilder();
             }
@@ -14772,17 +15403,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubsResponse parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SubsResponse(input, extensionRegistry);
             }
         };
 
@@ -14853,6 +15474,57 @@ public final class Monitoring {
             return new SubsList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private SubsList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    subsDescriptor_ = new java.util.ArrayList<monitoring.Monitoring.SubsDescriptor>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                subsDescriptor_.add(input.readMessage(monitoring.Monitoring.SubsDescriptor.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    subsDescriptor_ = java.util.Collections.unmodifiableList(subsDescriptor_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_SubsList_descriptor;
         }
@@ -14864,7 +15536,6 @@ public final class Monitoring {
 
         public static final int SUBS_DESCRIPTOR_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.SubsDescriptor> subsDescriptor_;
 
         /**
@@ -14925,7 +15596,7 @@ public final class Monitoring {
             for (int i = 0; i < subsDescriptor_.size(); i++) {
                 output.writeMessage(1, subsDescriptor_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -14937,7 +15608,7 @@ public final class Monitoring {
             for (int i = 0; i < subsDescriptor_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, subsDescriptor_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -14953,7 +15624,7 @@ public final class Monitoring {
             monitoring.Monitoring.SubsList other = (monitoring.Monitoring.SubsList) obj;
             if (!getSubsDescriptorList().equals(other.getSubsDescriptorList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -14969,7 +15640,7 @@ public final class Monitoring {
                 hash = (37 * hash) + SUBS_DESCRIPTOR_FIELD_NUMBER;
                 hash = (53 * hash) + getSubsDescriptorList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -15063,23 +15734,29 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.SubsList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getSubsDescriptorFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (subsDescriptorBuilder_ == null) {
                     subsDescriptor_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    subsDescriptor_ = null;
                     subsDescriptorBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -15105,15 +15782,7 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.SubsList buildPartial() {
                 monitoring.Monitoring.SubsList result = new monitoring.Monitoring.SubsList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.SubsList result) {
+                int from_bitField0_ = bitField0_;
                 if (subsDescriptorBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         subsDescriptor_ = java.util.Collections.unmodifiableList(subsDescriptor_);
@@ -15123,10 +15792,38 @@ public final class Monitoring {
                 } else {
                     result.subsDescriptor_ = subsDescriptorBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.SubsList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -15166,7 +15863,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -15178,47 +15875,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.SubsList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    monitoring.Monitoring.SubsDescriptor m = input.readMessage(monitoring.Monitoring.SubsDescriptor.parser(), extensionRegistry);
-                                    if (subsDescriptorBuilder_ == null) {
-                                        ensureSubsDescriptorIsMutable();
-                                        subsDescriptor_.add(m);
-                                    } else {
-                                        subsDescriptorBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.SubsList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -15488,17 +16155,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public SubsList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new SubsList(input, extensionRegistry);
             }
         };
 
@@ -15637,6 +16294,108 @@ public final class Monitoring {
             return new AlarmDescriptor();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AlarmDescriptor(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.AlarmID.Builder subBuilder = null;
+                                if (alarmId_ != null) {
+                                    subBuilder = alarmId_.toBuilder();
+                                }
+                                alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(alarmId_);
+                                    alarmId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                alarmDescription_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                name_ = s;
+                                break;
+                            }
+                        case 34:
+                            {
+                                monitoring.Monitoring.KpiId.Builder subBuilder = null;
+                                if (kpiId_ != null) {
+                                    subBuilder = kpiId_.toBuilder();
+                                }
+                                kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiId_);
+                                    kpiId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 42:
+                            {
+                                monitoring.Monitoring.KpiValueRange.Builder subBuilder = null;
+                                if (kpiValueRange_ != null) {
+                                    subBuilder = kpiValueRange_.toBuilder();
+                                }
+                                kpiValueRange_ = input.readMessage(monitoring.Monitoring.KpiValueRange.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiValueRange_);
+                                    kpiValueRange_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 50:
+                            {
+                                context.ContextOuterClass.Timestamp.Builder subBuilder = null;
+                                if (timestamp_ != null) {
+                                    subBuilder = timestamp_.toBuilder();
+                                }
+                                timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(timestamp_);
+                                    timestamp_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
         }
@@ -15673,13 +16432,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+            return getAlarmId();
         }
 
         public static final int ALARM_DESCRIPTION_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object alarmDescription_ = "";
+        private volatile java.lang.Object alarmDescription_;
 
         /**
          * <code>string alarm_description = 2;</code>
@@ -15716,8 +16474,7 @@ public final class Monitoring {
 
         public static final int NAME_FIELD_NUMBER = 3;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object name_ = "";
+        private volatile java.lang.Object name_;
 
         /**
          * <code>string name = 3;</code>
@@ -15779,7 +16536,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+            return getKpiId();
         }
 
         public static final int KPI_VALUE_RANGE_FIELD_NUMBER = 5;
@@ -15809,7 +16566,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder() {
-            return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
+            return getKpiValueRange();
         }
 
         public static final int TIMESTAMP_FIELD_NUMBER = 6;
@@ -15839,7 +16596,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+            return getTimestamp();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -15860,10 +16617,10 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alarmDescription_)) {
+            if (!getAlarmDescriptionBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, alarmDescription_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
             }
             if (kpiId_ != null) {
@@ -15875,7 +16632,7 @@ public final class Monitoring {
             if (timestamp_ != null) {
                 output.writeMessage(6, getTimestamp());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -15887,10 +16644,10 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alarmDescription_)) {
+            if (!getAlarmDescriptionBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, alarmDescription_);
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+            if (!getNameBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
             }
             if (kpiId_ != null) {
@@ -15902,7 +16659,7 @@ public final class Monitoring {
             if (timestamp_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getTimestamp());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -15944,7 +16701,7 @@ public final class Monitoring {
                 if (!getTimestamp().equals(other.getTimestamp()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -15976,7 +16733,7 @@ public final class Monitoring {
                 hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                 hash = (53 * hash) + getTimestamp().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -16070,36 +16827,46 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmDescriptor.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
                 alarmDescription_ = "";
                 name_ = "";
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                kpiValueRange_ = null;
-                if (kpiValueRangeBuilder_ != null) {
-                    kpiValueRangeBuilder_.dispose();
+                if (kpiValueRangeBuilder_ == null) {
+                    kpiValueRange_ = null;
+                } else {
+                    kpiValueRange_ = null;
                     kpiValueRangeBuilder_ = null;
                 }
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
                 return this;
@@ -16127,33 +16894,60 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmDescriptor buildPartial() {
                 monitoring.Monitoring.AlarmDescriptor result = new monitoring.Monitoring.AlarmDescriptor(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (alarmIdBuilder_ == null) {
+                    result.alarmId_ = alarmId_;
+                } else {
+                    result.alarmId_ = alarmIdBuilder_.build();
+                }
+                result.alarmDescription_ = alarmDescription_;
+                result.name_ = name_;
+                if (kpiIdBuilder_ == null) {
+                    result.kpiId_ = kpiId_;
+                } else {
+                    result.kpiId_ = kpiIdBuilder_.build();
+                }
+                if (kpiValueRangeBuilder_ == null) {
+                    result.kpiValueRange_ = kpiValueRange_;
+                } else {
+                    result.kpiValueRange_ = kpiValueRangeBuilder_.build();
+                }
+                if (timestampBuilder_ == null) {
+                    result.timestamp_ = timestamp_;
+                } else {
+                    result.timestamp_ = timestampBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.AlarmDescriptor result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.alarmDescription_ = alarmDescription_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.name_ = name_;
-                }
-                if (((from_bitField0_ & 0x00000008) != 0)) {
-                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000010) != 0)) {
-                    result.kpiValueRange_ = kpiValueRangeBuilder_ == null ? kpiValueRange_ : kpiValueRangeBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000020) != 0)) {
-                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -16174,12 +16968,10 @@ public final class Monitoring {
                 }
                 if (!other.getAlarmDescription().isEmpty()) {
                     alarmDescription_ = other.alarmDescription_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (!other.getName().isEmpty()) {
                     name_ = other.name_;
-                    bitField0_ |= 0x00000004;
                     onChanged();
                 }
                 if (other.hasKpiId()) {
@@ -16191,7 +16983,7 @@ public final class Monitoring {
                 if (other.hasTimestamp()) {
                     mergeTimestamp(other.getTimestamp());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -16203,82 +16995,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.AlarmDescriptor parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    alarmDescription_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    name_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            case 34:
-                                {
-                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000008;
-                                    break;
-                                }
-                            // case 34
-                            case 42:
-                                {
-                                    input.readMessage(getKpiValueRangeFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000010;
-                                    break;
-                                }
-                            // case 42
-                            case 50:
-                                {
-                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000020;
-                                    break;
-                                }
-                            // case 50
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.AlarmDescriptor) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.AlarmID alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_;
@@ -16288,7 +17018,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return alarmIdBuilder_ != null || alarmId_ != null;
             }
 
             /**
@@ -16312,11 +17042,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -16326,11 +17055,10 @@ public final class Monitoring {
             public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -16339,16 +17067,15 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
                 if (alarmIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
-                        getAlarmIdBuilder().mergeFrom(value);
+                    if (alarmId_ != null) {
+                        alarmId_ = monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
                     } else {
                         alarmId_ = value;
                     }
+                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -16356,13 +17083,13 @@ public final class Monitoring {
              * <code>.monitoring.AlarmID alarm_id = 1;</code>
              */
             public Builder clearAlarmId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                    onChanged();
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -16370,7 +17097,6 @@ public final class Monitoring {
              * <code>.monitoring.AlarmID alarm_id = 1;</code>
              */
             public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -16440,7 +17166,6 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 alarmDescription_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -16451,7 +17176,6 @@ public final class Monitoring {
              */
             public Builder clearAlarmDescription() {
                 alarmDescription_ = getDefaultInstance().getAlarmDescription();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -16467,7 +17191,6 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 alarmDescription_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -16515,7 +17238,6 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 name_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -16526,7 +17248,6 @@ public final class Monitoring {
              */
             public Builder clearName() {
                 name_ = getDefaultInstance().getName();
-                bitField0_ = (bitField0_ & ~0x00000004);
                 onChanged();
                 return this;
             }
@@ -16542,7 +17263,6 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 name_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -16556,7 +17276,7 @@ public final class Monitoring {
              * @return Whether the kpiId field is set.
              */
             public boolean hasKpiId() {
-                return ((bitField0_ & 0x00000008) != 0);
+                return kpiIdBuilder_ != null || kpiId_ != null;
             }
 
             /**
@@ -16580,11 +17300,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiId_ = value;
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -16594,11 +17313,10 @@ public final class Monitoring {
             public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
                 if (kpiIdBuilder_ == null) {
                     kpiId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -16607,16 +17325,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
                 if (kpiIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000008) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
-                        getKpiIdBuilder().mergeFrom(value);
+                    if (kpiId_ != null) {
+                        kpiId_ = monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
                     } else {
                         kpiId_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000008;
-                onChanged();
                 return this;
             }
 
@@ -16624,13 +17341,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 4;</code>
              */
             public Builder clearKpiId() {
-                bitField0_ = (bitField0_ & ~0x00000008);
-                kpiId_ = null;
-                if (kpiIdBuilder_ != null) {
-                    kpiIdBuilder_.dispose();
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = null;
+                    onChanged();
+                } else {
+                    kpiId_ = null;
                     kpiIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -16638,7 +17355,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiId kpi_id = 4;</code>
              */
             public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-                bitField0_ |= 0x00000008;
                 onChanged();
                 return getKpiIdFieldBuilder().getBuilder();
             }
@@ -16674,7 +17390,7 @@ public final class Monitoring {
              * @return Whether the kpiValueRange field is set.
              */
             public boolean hasKpiValueRange() {
-                return ((bitField0_ & 0x00000010) != 0);
+                return kpiValueRangeBuilder_ != null || kpiValueRange_ != null;
             }
 
             /**
@@ -16698,11 +17414,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiValueRange_ = value;
+                    onChanged();
                 } else {
                     kpiValueRangeBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -16712,11 +17427,10 @@ public final class Monitoring {
             public Builder setKpiValueRange(monitoring.Monitoring.KpiValueRange.Builder builderForValue) {
                 if (kpiValueRangeBuilder_ == null) {
                     kpiValueRange_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiValueRangeBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -16725,16 +17439,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiValueRange(monitoring.Monitoring.KpiValueRange value) {
                 if (kpiValueRangeBuilder_ == null) {
-                    if (((bitField0_ & 0x00000010) != 0) && kpiValueRange_ != null && kpiValueRange_ != monitoring.Monitoring.KpiValueRange.getDefaultInstance()) {
-                        getKpiValueRangeBuilder().mergeFrom(value);
+                    if (kpiValueRange_ != null) {
+                        kpiValueRange_ = monitoring.Monitoring.KpiValueRange.newBuilder(kpiValueRange_).mergeFrom(value).buildPartial();
                     } else {
                         kpiValueRange_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiValueRangeBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000010;
-                onChanged();
                 return this;
             }
 
@@ -16742,13 +17455,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
              */
             public Builder clearKpiValueRange() {
-                bitField0_ = (bitField0_ & ~0x00000010);
-                kpiValueRange_ = null;
-                if (kpiValueRangeBuilder_ != null) {
-                    kpiValueRangeBuilder_.dispose();
+                if (kpiValueRangeBuilder_ == null) {
+                    kpiValueRange_ = null;
+                    onChanged();
+                } else {
+                    kpiValueRange_ = null;
                     kpiValueRangeBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -16756,7 +17469,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
              */
             public monitoring.Monitoring.KpiValueRange.Builder getKpiValueRangeBuilder() {
-                bitField0_ |= 0x00000010;
                 onChanged();
                 return getKpiValueRangeFieldBuilder().getBuilder();
             }
@@ -16792,7 +17504,7 @@ public final class Monitoring {
              * @return Whether the timestamp field is set.
              */
             public boolean hasTimestamp() {
-                return ((bitField0_ & 0x00000020) != 0);
+                return timestampBuilder_ != null || timestamp_ != null;
             }
 
             /**
@@ -16816,11 +17528,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     timestamp_ = value;
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -16830,11 +17541,10 @@ public final class Monitoring {
             public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                 if (timestampBuilder_ == null) {
                     timestamp_ = builderForValue.build();
+                    onChanged();
                 } else {
                     timestampBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -16843,16 +17553,15 @@ public final class Monitoring {
              */
             public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                 if (timestampBuilder_ == null) {
-                    if (((bitField0_ & 0x00000020) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
-                        getTimestampBuilder().mergeFrom(value);
+                    if (timestamp_ != null) {
+                        timestamp_ = context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
                     } else {
                         timestamp_ = value;
                     }
+                    onChanged();
                 } else {
                     timestampBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000020;
-                onChanged();
                 return this;
             }
 
@@ -16860,13 +17569,13 @@ public final class Monitoring {
              * <code>.context.Timestamp timestamp = 6;</code>
              */
             public Builder clearTimestamp() {
-                bitField0_ = (bitField0_ & ~0x00000020);
-                timestamp_ = null;
-                if (timestampBuilder_ != null) {
-                    timestampBuilder_.dispose();
+                if (timestampBuilder_ == null) {
+                    timestamp_ = null;
+                    onChanged();
+                } else {
+                    timestamp_ = null;
                     timestampBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -16874,7 +17583,6 @@ public final class Monitoring {
              * <code>.context.Timestamp timestamp = 6;</code>
              */
             public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-                bitField0_ |= 0x00000020;
                 onChanged();
                 return getTimestampFieldBuilder().getBuilder();
             }
@@ -16928,17 +17636,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmDescriptor parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AlarmDescriptor(input, extensionRegistry);
             }
         };
 
@@ -17000,6 +17698,57 @@ public final class Monitoring {
             return new AlarmID();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AlarmID(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (alarmId_ != null) {
+                                    subBuilder = alarmId_.toBuilder();
+                                }
+                                alarmId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(alarmId_);
+                                    alarmId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
         }
@@ -17036,7 +17785,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder() {
-            return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
+            return getAlarmId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -17057,7 +17806,7 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -17069,7 +17818,7 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -17089,7 +17838,7 @@ public final class Monitoring {
                 if (!getAlarmId().equals(other.getAlarmId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -17105,7 +17854,7 @@ public final class Monitoring {
                 hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
                 hash = (53 * hash) + getAlarmId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -17199,19 +17948,26 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmID.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
                 return this;
@@ -17239,18 +17995,43 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmID buildPartial() {
                 monitoring.Monitoring.AlarmID result = new monitoring.Monitoring.AlarmID(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (alarmIdBuilder_ == null) {
+                    result.alarmId_ = alarmId_;
+                } else {
+                    result.alarmId_ = alarmIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.AlarmID result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -17269,7 +18050,7 @@ public final class Monitoring {
                 if (other.hasAlarmId()) {
                     mergeAlarmId(other.getAlarmId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -17278,50 +18059,23 @@ public final class Monitoring {
             public final boolean isInitialized() {
                 return true;
             }
-
-            @java.lang.Override
-            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
-                try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+                monitoring.Monitoring.AlarmID parsedMessage = null;
+                try {
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.AlarmID) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> alarmIdBuilder_;
@@ -17331,7 +18085,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return alarmIdBuilder_ != null || alarmId_ != null;
             }
 
             /**
@@ -17355,11 +18109,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17369,11 +18122,10 @@ public final class Monitoring {
             public Builder setAlarmId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17382,16 +18134,15 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(context.ContextOuterClass.Uuid value) {
                 if (alarmIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getAlarmIdBuilder().mergeFrom(value);
+                    if (alarmId_ != null) {
+                        alarmId_ = context.ContextOuterClass.Uuid.newBuilder(alarmId_).mergeFrom(value).buildPartial();
                     } else {
                         alarmId_ = value;
                     }
+                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17399,13 +18150,13 @@ public final class Monitoring {
              * <code>.context.Uuid alarm_id = 1;</code>
              */
             public Builder clearAlarmId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                    onChanged();
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -17413,7 +18164,6 @@ public final class Monitoring {
              * <code>.context.Uuid alarm_id = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getAlarmIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -17467,17 +18217,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmID parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AlarmID(input, extensionRegistry);
             }
         };
 
@@ -17551,6 +18291,67 @@ public final class Monitoring {
             return new AlarmSubscription();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AlarmSubscription(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.AlarmID.Builder subBuilder = null;
+                                if (alarmId_ != null) {
+                                    subBuilder = alarmId_.toBuilder();
+                                }
+                                alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(alarmId_);
+                                    alarmId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 21:
+                            {
+                                subscriptionTimeoutS_ = input.readFloat();
+                                break;
+                            }
+                        case 29:
+                            {
+                                subscriptionFrequencyMs_ = input.readFloat();
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_descriptor;
         }
@@ -17587,12 +18388,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+            return getAlarmId();
         }
 
         public static final int SUBSCRIPTION_TIMEOUT_S_FIELD_NUMBER = 2;
 
-        private float subscriptionTimeoutS_ = 0F;
+        private float subscriptionTimeoutS_;
 
         /**
          * <code>float subscription_timeout_s = 2;</code>
@@ -17605,7 +18406,7 @@ public final class Monitoring {
 
         public static final int SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER = 3;
 
-        private float subscriptionFrequencyMs_ = 0F;
+        private float subscriptionFrequencyMs_;
 
         /**
          * <code>float subscription_frequency_ms = 3;</code>
@@ -17634,13 +18435,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            if (java.lang.Float.floatToRawIntBits(subscriptionTimeoutS_) != 0) {
+            if (subscriptionTimeoutS_ != 0F) {
                 output.writeFloat(2, subscriptionTimeoutS_);
             }
-            if (java.lang.Float.floatToRawIntBits(subscriptionFrequencyMs_) != 0) {
+            if (subscriptionFrequencyMs_ != 0F) {
                 output.writeFloat(3, subscriptionFrequencyMs_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -17652,13 +18453,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            if (java.lang.Float.floatToRawIntBits(subscriptionTimeoutS_) != 0) {
+            if (subscriptionTimeoutS_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, subscriptionTimeoutS_);
             }
-            if (java.lang.Float.floatToRawIntBits(subscriptionFrequencyMs_) != 0) {
+            if (subscriptionFrequencyMs_ != 0F) {
                 size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, subscriptionFrequencyMs_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -17682,7 +18483,7 @@ public final class Monitoring {
                 return false;
             if (java.lang.Float.floatToIntBits(getSubscriptionFrequencyMs()) != java.lang.Float.floatToIntBits(other.getSubscriptionFrequencyMs()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -17702,7 +18503,7 @@ public final class Monitoring {
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSubscriptionTimeoutS());
             hash = (37 * hash) + SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER;
             hash = (53 * hash) + java.lang.Float.floatToIntBits(getSubscriptionFrequencyMs());
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -17796,19 +18597,26 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmSubscription.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
                 subscriptionTimeoutS_ = 0F;
@@ -17838,24 +18646,45 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmSubscription buildPartial() {
                 monitoring.Monitoring.AlarmSubscription result = new monitoring.Monitoring.AlarmSubscription(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (alarmIdBuilder_ == null) {
+                    result.alarmId_ = alarmId_;
+                } else {
+                    result.alarmId_ = alarmIdBuilder_.build();
                 }
+                result.subscriptionTimeoutS_ = subscriptionTimeoutS_;
+                result.subscriptionFrequencyMs_ = subscriptionFrequencyMs_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.AlarmSubscription result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.subscriptionTimeoutS_ = subscriptionTimeoutS_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.subscriptionFrequencyMs_ = subscriptionFrequencyMs_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -17880,7 +18709,7 @@ public final class Monitoring {
                 if (other.getSubscriptionFrequencyMs() != 0F) {
                     setSubscriptionFrequencyMs(other.getSubscriptionFrequencyMs());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -17892,61 +18721,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.AlarmSubscription parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 21:
-                                {
-                                    subscriptionTimeoutS_ = input.readFloat();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 21
-                            case 29:
-                                {
-                                    subscriptionFrequencyMs_ = input.readFloat();
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 29
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.AlarmSubscription) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.AlarmID alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_;
@@ -17956,7 +18744,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return alarmIdBuilder_ != null || alarmId_ != null;
             }
 
             /**
@@ -17980,11 +18768,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -17994,11 +18781,10 @@ public final class Monitoring {
             public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -18007,16 +18793,15 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
                 if (alarmIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
-                        getAlarmIdBuilder().mergeFrom(value);
+                    if (alarmId_ != null) {
+                        alarmId_ = monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
                     } else {
                         alarmId_ = value;
                     }
+                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -18024,13 +18809,13 @@ public final class Monitoring {
              * <code>.monitoring.AlarmID alarm_id = 1;</code>
              */
             public Builder clearAlarmId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                    onChanged();
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -18038,7 +18823,6 @@ public final class Monitoring {
              * <code>.monitoring.AlarmID alarm_id = 1;</code>
              */
             public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -18083,7 +18867,6 @@ public final class Monitoring {
              */
             public Builder setSubscriptionTimeoutS(float value) {
                 subscriptionTimeoutS_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -18093,7 +18876,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSubscriptionTimeoutS() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 subscriptionTimeoutS_ = 0F;
                 onChanged();
                 return this;
@@ -18117,7 +18899,6 @@ public final class Monitoring {
              */
             public Builder setSubscriptionFrequencyMs(float value) {
                 subscriptionFrequencyMs_ = value;
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return this;
             }
@@ -18127,7 +18908,6 @@ public final class Monitoring {
              * @return This builder for chaining.
              */
             public Builder clearSubscriptionFrequencyMs() {
-                bitField0_ = (bitField0_ & ~0x00000004);
                 subscriptionFrequencyMs_ = 0F;
                 onChanged();
                 return this;
@@ -18160,17 +18940,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmSubscription parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AlarmSubscription(input, extensionRegistry);
             }
         };
 
@@ -18262,6 +19032,76 @@ public final class Monitoring {
             return new AlarmResponse();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AlarmResponse(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                monitoring.Monitoring.AlarmID.Builder subBuilder = null;
+                                if (alarmId_ != null) {
+                                    subBuilder = alarmId_.toBuilder();
+                                }
+                                alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(alarmId_);
+                                    alarmId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                text_ = s;
+                                break;
+                            }
+                        case 26:
+                            {
+                                monitoring.Monitoring.KpiList.Builder subBuilder = null;
+                                if (kpiList_ != null) {
+                                    subBuilder = kpiList_.toBuilder();
+                                }
+                                kpiList_ = input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(kpiList_);
+                                    kpiList_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_descriptor;
         }
@@ -18298,13 +19138,12 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+            return getAlarmId();
         }
 
         public static final int TEXT_FIELD_NUMBER = 2;
 
-        @SuppressWarnings("serial")
-        private volatile java.lang.Object text_ = "";
+        private volatile java.lang.Object text_;
 
         /**
          * <code>string text = 2;</code>
@@ -18366,7 +19205,7 @@ public final class Monitoring {
          */
         @java.lang.Override
         public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
-            return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
+            return getKpiList();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -18387,13 +19226,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 output.writeMessage(1, getAlarmId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
+            if (!getTextBytes().isEmpty()) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 2, text_);
             }
             if (kpiList_ != null) {
                 output.writeMessage(3, getKpiList());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -18405,13 +19244,13 @@ public final class Monitoring {
             if (alarmId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
             }
-            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
+            if (!getTextBytes().isEmpty()) {
                 size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, text_);
             }
             if (kpiList_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKpiList());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -18439,7 +19278,7 @@ public final class Monitoring {
                 if (!getKpiList().equals(other.getKpiList()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -18461,7 +19300,7 @@ public final class Monitoring {
                 hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
                 hash = (53 * hash) + getKpiList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -18555,25 +19394,33 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmResponse.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
                 text_ = "";
-                kpiList_ = null;
-                if (kpiListBuilder_ != null) {
-                    kpiListBuilder_.dispose();
+                if (kpiListBuilder_ == null) {
+                    kpiList_ = null;
+                } else {
+                    kpiList_ = null;
                     kpiListBuilder_ = null;
                 }
                 return this;
@@ -18601,24 +19448,49 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmResponse buildPartial() {
                 monitoring.Monitoring.AlarmResponse result = new monitoring.Monitoring.AlarmResponse(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (alarmIdBuilder_ == null) {
+                    result.alarmId_ = alarmId_;
+                } else {
+                    result.alarmId_ = alarmIdBuilder_.build();
+                }
+                result.text_ = text_;
+                if (kpiListBuilder_ == null) {
+                    result.kpiList_ = kpiList_;
+                } else {
+                    result.kpiList_ = kpiListBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.AlarmResponse result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.text_ = text_;
-                }
-                if (((from_bitField0_ & 0x00000004) != 0)) {
-                    result.kpiList_ = kpiListBuilder_ == null ? kpiList_ : kpiListBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -18639,13 +19511,12 @@ public final class Monitoring {
                 }
                 if (!other.getText().isEmpty()) {
                     text_ = other.text_;
-                    bitField0_ |= 0x00000002;
                     onChanged();
                 }
                 if (other.hasKpiList()) {
                     mergeKpiList(other.getKpiList());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -18657,61 +19528,20 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.AlarmResponse parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    text_ = input.readStringRequireUtf8();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            case 26:
-                                {
-                                    input.readMessage(getKpiListFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000004;
-                                    break;
-                                }
-                            // case 26
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.AlarmResponse) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private monitoring.Monitoring.AlarmID alarmId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_;
@@ -18721,7 +19551,7 @@ public final class Monitoring {
              * @return Whether the alarmId field is set.
              */
             public boolean hasAlarmId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return alarmIdBuilder_ != null || alarmId_ != null;
             }
 
             /**
@@ -18745,11 +19575,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     alarmId_ = value;
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -18759,11 +19588,10 @@ public final class Monitoring {
             public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
                 if (alarmIdBuilder_ == null) {
                     alarmId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     alarmIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -18772,16 +19600,15 @@ public final class Monitoring {
              */
             public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
                 if (alarmIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
-                        getAlarmIdBuilder().mergeFrom(value);
+                    if (alarmId_ != null) {
+                        alarmId_ = monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
                     } else {
                         alarmId_ = value;
                     }
+                    onChanged();
                 } else {
                     alarmIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -18789,13 +19616,13 @@ public final class Monitoring {
              * <code>.monitoring.AlarmID alarm_id = 1;</code>
              */
             public Builder clearAlarmId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                alarmId_ = null;
-                if (alarmIdBuilder_ != null) {
-                    alarmIdBuilder_.dispose();
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = null;
+                    onChanged();
+                } else {
+                    alarmId_ = null;
                     alarmIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -18803,7 +19630,6 @@ public final class Monitoring {
              * <code>.monitoring.AlarmID alarm_id = 1;</code>
              */
             public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getAlarmIdFieldBuilder().getBuilder();
             }
@@ -18873,7 +19699,6 @@ public final class Monitoring {
                     throw new NullPointerException();
                 }
                 text_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -18884,7 +19709,6 @@ public final class Monitoring {
              */
             public Builder clearText() {
                 text_ = getDefaultInstance().getText();
-                bitField0_ = (bitField0_ & ~0x00000002);
                 onChanged();
                 return this;
             }
@@ -18900,7 +19724,6 @@ public final class Monitoring {
                 }
                 checkByteStringIsUtf8(value);
                 text_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -18914,7 +19737,7 @@ public final class Monitoring {
              * @return Whether the kpiList field is set.
              */
             public boolean hasKpiList() {
-                return ((bitField0_ & 0x00000004) != 0);
+                return kpiListBuilder_ != null || kpiList_ != null;
             }
 
             /**
@@ -18938,11 +19761,10 @@ public final class Monitoring {
                         throw new NullPointerException();
                     }
                     kpiList_ = value;
+                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -18952,11 +19774,10 @@ public final class Monitoring {
             public Builder setKpiList(monitoring.Monitoring.KpiList.Builder builderForValue) {
                 if (kpiListBuilder_ == null) {
                     kpiList_ = builderForValue.build();
+                    onChanged();
                 } else {
                     kpiListBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -18965,16 +19786,15 @@ public final class Monitoring {
              */
             public Builder mergeKpiList(monitoring.Monitoring.KpiList value) {
                 if (kpiListBuilder_ == null) {
-                    if (((bitField0_ & 0x00000004) != 0) && kpiList_ != null && kpiList_ != monitoring.Monitoring.KpiList.getDefaultInstance()) {
-                        getKpiListBuilder().mergeFrom(value);
+                    if (kpiList_ != null) {
+                        kpiList_ = monitoring.Monitoring.KpiList.newBuilder(kpiList_).mergeFrom(value).buildPartial();
                     } else {
                         kpiList_ = value;
                     }
+                    onChanged();
                 } else {
                     kpiListBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000004;
-                onChanged();
                 return this;
             }
 
@@ -18982,13 +19802,13 @@ public final class Monitoring {
              * <code>.monitoring.KpiList kpi_list = 3;</code>
              */
             public Builder clearKpiList() {
-                bitField0_ = (bitField0_ & ~0x00000004);
-                kpiList_ = null;
-                if (kpiListBuilder_ != null) {
-                    kpiListBuilder_.dispose();
+                if (kpiListBuilder_ == null) {
+                    kpiList_ = null;
+                    onChanged();
+                } else {
+                    kpiList_ = null;
                     kpiListBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -18996,7 +19816,6 @@ public final class Monitoring {
              * <code>.monitoring.KpiList kpi_list = 3;</code>
              */
             public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() {
-                bitField0_ |= 0x00000004;
                 onChanged();
                 return getKpiListFieldBuilder().getBuilder();
             }
@@ -19050,17 +19869,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmResponse parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AlarmResponse(input, extensionRegistry);
             }
         };
 
@@ -19131,6 +19940,57 @@ public final class Monitoring {
             return new AlarmList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private AlarmList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    alarmDescriptor_ = new java.util.ArrayList<monitoring.Monitoring.AlarmDescriptor>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                alarmDescriptor_.add(input.readMessage(monitoring.Monitoring.AlarmDescriptor.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    alarmDescriptor_ = java.util.Collections.unmodifiableList(alarmDescriptor_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return monitoring.Monitoring.internal_static_monitoring_AlarmList_descriptor;
         }
@@ -19142,7 +20002,6 @@ public final class Monitoring {
 
         public static final int ALARM_DESCRIPTOR_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<monitoring.Monitoring.AlarmDescriptor> alarmDescriptor_;
 
         /**
@@ -19203,7 +20062,7 @@ public final class Monitoring {
             for (int i = 0; i < alarmDescriptor_.size(); i++) {
                 output.writeMessage(1, alarmDescriptor_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -19215,7 +20074,7 @@ public final class Monitoring {
             for (int i = 0; i < alarmDescriptor_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, alarmDescriptor_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -19231,7 +20090,7 @@ public final class Monitoring {
             monitoring.Monitoring.AlarmList other = (monitoring.Monitoring.AlarmList) obj;
             if (!getAlarmDescriptorList().equals(other.getAlarmDescriptorList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -19247,7 +20106,7 @@ public final class Monitoring {
                 hash = (37 * hash) + ALARM_DESCRIPTOR_FIELD_NUMBER;
                 hash = (53 * hash) + getAlarmDescriptorList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -19341,23 +20200,29 @@ public final class Monitoring {
 
             // Construct using monitoring.Monitoring.AlarmList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getAlarmDescriptorFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (alarmDescriptorBuilder_ == null) {
                     alarmDescriptor_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    alarmDescriptor_ = null;
                     alarmDescriptorBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -19383,15 +20248,7 @@ public final class Monitoring {
             @java.lang.Override
             public monitoring.Monitoring.AlarmList buildPartial() {
                 monitoring.Monitoring.AlarmList result = new monitoring.Monitoring.AlarmList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(monitoring.Monitoring.AlarmList result) {
+                int from_bitField0_ = bitField0_;
                 if (alarmDescriptorBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         alarmDescriptor_ = java.util.Collections.unmodifiableList(alarmDescriptor_);
@@ -19401,10 +20258,38 @@ public final class Monitoring {
                 } else {
                     result.alarmDescriptor_ = alarmDescriptorBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(monitoring.Monitoring.AlarmList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -19444,7 +20329,7 @@ public final class Monitoring {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -19456,47 +20341,17 @@ public final class Monitoring {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                monitoring.Monitoring.AlarmList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    monitoring.Monitoring.AlarmDescriptor m = input.readMessage(monitoring.Monitoring.AlarmDescriptor.parser(), extensionRegistry);
-                                    if (alarmDescriptorBuilder_ == null) {
-                                        ensureAlarmDescriptorIsMutable();
-                                        alarmDescriptor_.add(m);
-                                    } else {
-                                        alarmDescriptorBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (monitoring.Monitoring.AlarmList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -19766,17 +20621,7 @@ public final class Monitoring {
 
             @java.lang.Override
             public AlarmList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new AlarmList(input, extensionRegistry);
             }
         };
 
diff --git a/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
index 7a275e5777320134c04591f4d9c29e23035148bf..83dffd6257d5685ee7d49c45258bbf1d68d3a817 100644
--- a/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
@@ -4,8 +4,7 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: monitoring.proto")
-@io.grpc.stub.annotations.GrpcGenerated
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: monitoring.proto")
 public final class MonitoringServiceGrpc {
 
     private MonitoringServiceGrpc() {
@@ -328,130 +327,123 @@ public final class MonitoringServiceGrpc {
 
     /**
      */
-    public interface AsyncService {
+    public static abstract class MonitoringServiceImplBase implements io.grpc.BindableService {
 
         /**
          */
-        default void setKpi(monitoring.Monitoring.KpiDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId> responseObserver) {
+        public void setKpi(monitoring.Monitoring.KpiDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiMethod(), responseObserver);
         }
 
         /**
          */
-        default void deleteKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void deleteKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteKpiMethod(), responseObserver);
         }
 
         /**
          */
-        default void getKpiDescriptor(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor> responseObserver) {
+        public void getKpiDescriptor(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorMethod(), responseObserver);
         }
 
         /**
          */
-        default void getKpiDescriptorList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList> responseObserver) {
+        public void getKpiDescriptorList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorListMethod(), responseObserver);
         }
 
         /**
          */
-        default void includeKpi(monitoring.Monitoring.Kpi request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void includeKpi(monitoring.Monitoring.Kpi request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getIncludeKpiMethod(), responseObserver);
         }
 
         /**
          */
-        default void monitorKpi(monitoring.Monitoring.MonitorKpiRequest request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void monitorKpi(monitoring.Monitoring.MonitorKpiRequest request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getMonitorKpiMethod(), responseObserver);
         }
 
         /**
          */
-        default void queryKpiData(monitoring.Monitoring.KpiQuery request, io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable> responseObserver) {
+        public void queryKpiData(monitoring.Monitoring.KpiQuery request, io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getQueryKpiDataMethod(), responseObserver);
         }
 
         /**
          */
-        default void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsResponse> responseObserver) {
+        public void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsResponse> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiSubscriptionMethod(), responseObserver);
         }
 
         /**
          */
-        default void getSubsDescriptor(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsDescriptor> responseObserver) {
+        public void getSubsDescriptor(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsDescriptor> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSubsDescriptorMethod(), responseObserver);
         }
 
         /**
          */
-        default void getSubscriptions(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsList> responseObserver) {
+        public void getSubscriptions(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSubscriptionsMethod(), responseObserver);
         }
 
         /**
          */
-        default void deleteSubscription(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void deleteSubscription(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteSubscriptionMethod(), responseObserver);
         }
 
         /**
          */
-        default void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID> responseObserver) {
+        public void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiAlarmMethod(), responseObserver);
         }
 
         /**
          */
-        default void getAlarms(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmList> responseObserver) {
+        public void getAlarms(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmsMethod(), responseObserver);
         }
 
         /**
          */
-        default void getAlarmDescriptor(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmDescriptor> responseObserver) {
+        public void getAlarmDescriptor(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmDescriptor> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmDescriptorMethod(), responseObserver);
         }
 
         /**
          */
-        default void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse> responseObserver) {
+        public void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmResponseStreamMethod(), responseObserver);
         }
 
         /**
          */
-        default void deleteAlarm(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+        public void deleteAlarm(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteAlarmMethod(), responseObserver);
         }
 
         /**
          */
-        default void getStreamKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
+        public void getStreamKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetStreamKpiMethod(), responseObserver);
         }
 
         /**
          */
-        default void getInstantKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
+        public void getInstantKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInstantKpiMethod(), responseObserver);
         }
-    }
-
-    /**
-     * Base class for the server implementation of the service MonitoringService.
-     */
-    public static abstract class MonitoringServiceImplBase implements io.grpc.BindableService, AsyncService {
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return MonitoringServiceGrpc.bindService(this);
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getSetKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId>(this, METHODID_SET_KPI))).addMethod(getDeleteKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty>(this, METHODID_DELETE_KPI))).addMethod(getGetKpiDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor>(this, METHODID_GET_KPI_DESCRIPTOR))).addMethod(getGetKpiDescriptorListMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.KpiDescriptorList>(this, METHODID_GET_KPI_DESCRIPTOR_LIST))).addMethod(getIncludeKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.Kpi, context.ContextOuterClass.Empty>(this, METHODID_INCLUDE_KPI))).addMethod(getMonitorKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.MonitorKpiRequest, context.ContextOuterClass.Empty>(this, METHODID_MONITOR_KPI))).addMethod(getQueryKpiDataMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable>(this, METHODID_QUERY_KPI_DATA))).addMethod(getSetKpiSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsResponse>(this, METHODID_SET_KPI_SUBSCRIPTION))).addMethod(getGetSubsDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubsDescriptor>(this, METHODID_GET_SUBS_DESCRIPTOR))).addMethod(getGetSubscriptionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.SubsList>(this, METHODID_GET_SUBSCRIPTIONS))).addMethod(getDeleteSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty>(this, METHODID_DELETE_SUBSCRIPTION))).addMethod(getSetKpiAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID>(this, METHODID_SET_KPI_ALARM))).addMethod(getGetAlarmsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.AlarmList>(this, METHODID_GET_ALARMS))).addMethod(getGetAlarmDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmDescriptor>(this, METHODID_GET_ALARM_DESCRIPTOR))).addMethod(getGetAlarmResponseStreamMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse>(this, METHODID_GET_ALARM_RESPONSE_STREAM))).addMethod(getDeleteAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty>(this, METHODID_DELETE_ALARM))).addMethod(getGetStreamKpiMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>(this, METHODID_GET_STREAM_KPI))).addMethod(getGetInstantKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>(this, METHODID_GET_INSTANT_KPI))).build();
         }
     }
 
     /**
-     * A stub to allow clients to do asynchronous rpc calls to service MonitoringService.
      */
     public static class MonitoringServiceStub extends io.grpc.stub.AbstractAsyncStub<MonitoringServiceStub> {
 
@@ -574,7 +566,6 @@ public final class MonitoringServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do synchronous rpc calls to service MonitoringService.
      */
     public static class MonitoringServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<MonitoringServiceBlockingStub> {
 
@@ -697,7 +688,6 @@ public final class MonitoringServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do ListenableFuture-style rpc calls to service MonitoringService.
      */
     public static class MonitoringServiceFutureStub extends io.grpc.stub.AbstractFutureStub<MonitoringServiceFutureStub> {
 
@@ -839,11 +829,11 @@ public final class MonitoringServiceGrpc {
 
     private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
 
-        private final AsyncService serviceImpl;
+        private final MonitoringServiceImplBase serviceImpl;
 
         private final int methodId;
 
-        MethodHandlers(AsyncService serviceImpl, int methodId) {
+        MethodHandlers(MonitoringServiceImplBase serviceImpl, int methodId) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
         }
@@ -921,10 +911,6 @@ public final class MonitoringServiceGrpc {
         }
     }
 
-    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
-        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getSetKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId>(service, METHODID_SET_KPI))).addMethod(getDeleteKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty>(service, METHODID_DELETE_KPI))).addMethod(getGetKpiDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor>(service, METHODID_GET_KPI_DESCRIPTOR))).addMethod(getGetKpiDescriptorListMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.KpiDescriptorList>(service, METHODID_GET_KPI_DESCRIPTOR_LIST))).addMethod(getIncludeKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.Kpi, context.ContextOuterClass.Empty>(service, METHODID_INCLUDE_KPI))).addMethod(getMonitorKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.MonitorKpiRequest, context.ContextOuterClass.Empty>(service, METHODID_MONITOR_KPI))).addMethod(getQueryKpiDataMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable>(service, METHODID_QUERY_KPI_DATA))).addMethod(getSetKpiSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsResponse>(service, METHODID_SET_KPI_SUBSCRIPTION))).addMethod(getGetSubsDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubsDescriptor>(service, METHODID_GET_SUBS_DESCRIPTOR))).addMethod(getGetSubscriptionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.SubsList>(service, METHODID_GET_SUBSCRIPTIONS))).addMethod(getDeleteSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty>(service, METHODID_DELETE_SUBSCRIPTION))).addMethod(getSetKpiAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID>(service, METHODID_SET_KPI_ALARM))).addMethod(getGetAlarmsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.AlarmList>(service, METHODID_GET_ALARMS))).addMethod(getGetAlarmDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmDescriptor>(service, METHODID_GET_ALARM_DESCRIPTOR))).addMethod(getGetAlarmResponseStreamMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse>(service, METHODID_GET_ALARM_RESPONSE_STREAM))).addMethod(getDeleteAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty>(service, METHODID_DELETE_ALARM))).addMethod(getGetStreamKpiMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>(service, METHODID_GET_STREAM_KPI))).addMethod(getGetInstantKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>(service, METHODID_GET_INSTANT_KPI))).build();
-    }
-
     private static abstract class MonitoringServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
         MonitoringServiceBaseDescriptorSupplier() {
diff --git a/src/ztp/target/generated-sources/grpc/ztp/Ztp.java b/src/ztp/target/generated-sources/grpc/ztp/Ztp.java
index 0812fc8eb63c7024fba5a59a20b283045368e019..bef889c0db021ad9741d228548ffb434bdd75b9b 100644
--- a/src/ztp/target/generated-sources/grpc/ztp/Ztp.java
+++ b/src/ztp/target/generated-sources/grpc/ztp/Ztp.java
@@ -322,6 +322,70 @@ public final class Ztp {
             return new DeviceRoleId();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceRoleId(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                context.ContextOuterClass.Uuid.Builder subBuilder = null;
+                                if (devRoleId_ != null) {
+                                    subBuilder = devRoleId_.toBuilder();
+                                }
+                                devRoleId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(devRoleId_);
+                                    devRoleId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.DeviceId.Builder subBuilder = null;
+                                if (devId_ != null) {
+                                    subBuilder = devId_.toBuilder();
+                                }
+                                devId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(devId_);
+                                    devId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return ztp.Ztp.internal_static_ztp_DeviceRoleId_descriptor;
         }
@@ -358,7 +422,7 @@ public final class Ztp {
          */
         @java.lang.Override
         public context.ContextOuterClass.UuidOrBuilder getDevRoleIdOrBuilder() {
-            return devRoleId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : devRoleId_;
+            return getDevRoleId();
         }
 
         public static final int DEVID_FIELD_NUMBER = 2;
@@ -388,7 +452,7 @@ public final class Ztp {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceIdOrBuilder getDevIdOrBuilder() {
-            return devId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : devId_;
+            return getDevId();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -412,7 +476,7 @@ public final class Ztp {
             if (devId_ != null) {
                 output.writeMessage(2, getDevId());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -427,7 +491,7 @@ public final class Ztp {
             if (devId_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDevId());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -453,7 +517,7 @@ public final class Ztp {
                 if (!getDevId().equals(other.getDevId()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -473,7 +537,7 @@ public final class Ztp {
                 hash = (37 * hash) + DEVID_FIELD_NUMBER;
                 hash = (53 * hash) + getDevId().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -567,24 +631,32 @@ public final class Ztp {
 
             // Construct using ztp.Ztp.DeviceRoleId.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                devRoleId_ = null;
-                if (devRoleIdBuilder_ != null) {
-                    devRoleIdBuilder_.dispose();
+                if (devRoleIdBuilder_ == null) {
+                    devRoleId_ = null;
+                } else {
+                    devRoleId_ = null;
                     devRoleIdBuilder_ = null;
                 }
-                devId_ = null;
-                if (devIdBuilder_ != null) {
-                    devIdBuilder_.dispose();
+                if (devIdBuilder_ == null) {
+                    devId_ = null;
+                } else {
+                    devId_ = null;
                     devIdBuilder_ = null;
                 }
                 return this;
@@ -612,21 +684,48 @@ public final class Ztp {
             @java.lang.Override
             public ztp.Ztp.DeviceRoleId buildPartial() {
                 ztp.Ztp.DeviceRoleId result = new ztp.Ztp.DeviceRoleId(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (devRoleIdBuilder_ == null) {
+                    result.devRoleId_ = devRoleId_;
+                } else {
+                    result.devRoleId_ = devRoleIdBuilder_.build();
+                }
+                if (devIdBuilder_ == null) {
+                    result.devId_ = devId_;
+                } else {
+                    result.devId_ = devIdBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(ztp.Ztp.DeviceRoleId result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.devRoleId_ = devRoleIdBuilder_ == null ? devRoleId_ : devRoleIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.devId_ = devIdBuilder_ == null ? devId_ : devIdBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -648,7 +747,7 @@ public final class Ztp {
                 if (other.hasDevId()) {
                     mergeDevId(other.getDevId());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -660,54 +759,20 @@ public final class Ztp {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                ztp.Ztp.DeviceRoleId parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getDevRoleIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getDevIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (ztp.Ztp.DeviceRoleId) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private context.ContextOuterClass.Uuid devRoleId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> devRoleIdBuilder_;
@@ -717,7 +782,7 @@ public final class Ztp {
              * @return Whether the devRoleId field is set.
              */
             public boolean hasDevRoleId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return devRoleIdBuilder_ != null || devRoleId_ != null;
             }
 
             /**
@@ -741,11 +806,10 @@ public final class Ztp {
                         throw new NullPointerException();
                     }
                     devRoleId_ = value;
+                    onChanged();
                 } else {
                     devRoleIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -755,11 +819,10 @@ public final class Ztp {
             public Builder setDevRoleId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                 if (devRoleIdBuilder_ == null) {
                     devRoleId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     devRoleIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -768,16 +831,15 @@ public final class Ztp {
              */
             public Builder mergeDevRoleId(context.ContextOuterClass.Uuid value) {
                 if (devRoleIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && devRoleId_ != null && devRoleId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
-                        getDevRoleIdBuilder().mergeFrom(value);
+                    if (devRoleId_ != null) {
+                        devRoleId_ = context.ContextOuterClass.Uuid.newBuilder(devRoleId_).mergeFrom(value).buildPartial();
                     } else {
                         devRoleId_ = value;
                     }
+                    onChanged();
                 } else {
                     devRoleIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -785,13 +847,13 @@ public final class Ztp {
              * <code>.context.Uuid devRoleId = 1;</code>
              */
             public Builder clearDevRoleId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                devRoleId_ = null;
-                if (devRoleIdBuilder_ != null) {
-                    devRoleIdBuilder_.dispose();
+                if (devRoleIdBuilder_ == null) {
+                    devRoleId_ = null;
+                    onChanged();
+                } else {
+                    devRoleId_ = null;
                     devRoleIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -799,7 +861,6 @@ public final class Ztp {
              * <code>.context.Uuid devRoleId = 1;</code>
              */
             public context.ContextOuterClass.Uuid.Builder getDevRoleIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDevRoleIdFieldBuilder().getBuilder();
             }
@@ -835,7 +896,7 @@ public final class Ztp {
              * @return Whether the devId field is set.
              */
             public boolean hasDevId() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return devIdBuilder_ != null || devId_ != null;
             }
 
             /**
@@ -859,11 +920,10 @@ public final class Ztp {
                         throw new NullPointerException();
                     }
                     devId_ = value;
+                    onChanged();
                 } else {
                     devIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -873,11 +933,10 @@ public final class Ztp {
             public Builder setDevId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                 if (devIdBuilder_ == null) {
                     devId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     devIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -886,16 +945,15 @@ public final class Ztp {
              */
             public Builder mergeDevId(context.ContextOuterClass.DeviceId value) {
                 if (devIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && devId_ != null && devId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
-                        getDevIdBuilder().mergeFrom(value);
+                    if (devId_ != null) {
+                        devId_ = context.ContextOuterClass.DeviceId.newBuilder(devId_).mergeFrom(value).buildPartial();
                     } else {
                         devId_ = value;
                     }
+                    onChanged();
                 } else {
                     devIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -903,13 +961,13 @@ public final class Ztp {
              * <code>.context.DeviceId devId = 2;</code>
              */
             public Builder clearDevId() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                devId_ = null;
-                if (devIdBuilder_ != null) {
-                    devIdBuilder_.dispose();
+                if (devIdBuilder_ == null) {
+                    devId_ = null;
+                    onChanged();
+                } else {
+                    devId_ = null;
                     devIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -917,7 +975,6 @@ public final class Ztp {
              * <code>.context.DeviceId devId = 2;</code>
              */
             public context.ContextOuterClass.DeviceId.Builder getDevIdBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getDevIdFieldBuilder().getBuilder();
             }
@@ -971,17 +1028,7 @@ public final class Ztp {
 
             @java.lang.Override
             public DeviceRoleId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceRoleId(input, extensionRegistry);
             }
         };
 
@@ -1056,6 +1103,63 @@ public final class Ztp {
             return new DeviceRole();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceRole(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                ztp.Ztp.DeviceRoleId.Builder subBuilder = null;
+                                if (devRoleId_ != null) {
+                                    subBuilder = devRoleId_.toBuilder();
+                                }
+                                devRoleId_ = input.readMessage(ztp.Ztp.DeviceRoleId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(devRoleId_);
+                                    devRoleId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                int rawValue = input.readEnum();
+                                devRoleType_ = rawValue;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return ztp.Ztp.internal_static_ztp_DeviceRole_descriptor;
         }
@@ -1092,12 +1196,12 @@ public final class Ztp {
          */
         @java.lang.Override
         public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
-            return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
+            return getDevRoleId();
         }
 
         public static final int DEVROLETYPE_FIELD_NUMBER = 2;
 
-        private int devRoleType_ = 0;
+        private int devRoleType_;
 
         /**
          * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
@@ -1114,7 +1218,8 @@ public final class Ztp {
          */
         @java.lang.Override
         public ztp.Ztp.DeviceRoleType getDevRoleType() {
-            ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.forNumber(devRoleType_);
+            @SuppressWarnings("deprecation")
+            ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.valueOf(devRoleType_);
             return result == null ? ztp.Ztp.DeviceRoleType.UNRECOGNIZED : result;
         }
 
@@ -1139,7 +1244,7 @@ public final class Ztp {
             if (devRoleType_ != ztp.Ztp.DeviceRoleType.NONE.getNumber()) {
                 output.writeEnum(2, devRoleType_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -1154,7 +1259,7 @@ public final class Ztp {
             if (devRoleType_ != ztp.Ztp.DeviceRoleType.NONE.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, devRoleType_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1176,7 +1281,7 @@ public final class Ztp {
             }
             if (devRoleType_ != other.devRoleType_)
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -1194,7 +1299,7 @@ public final class Ztp {
             }
             hash = (37 * hash) + DEVROLETYPE_FIELD_NUMBER;
             hash = (53 * hash) + devRoleType_;
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -1288,19 +1393,26 @@ public final class Ztp {
 
             // Construct using ztp.Ztp.DeviceRole.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                devRoleId_ = null;
-                if (devRoleIdBuilder_ != null) {
-                    devRoleIdBuilder_.dispose();
+                if (devRoleIdBuilder_ == null) {
+                    devRoleId_ = null;
+                } else {
+                    devRoleId_ = null;
                     devRoleIdBuilder_ = null;
                 }
                 devRoleType_ = 0;
@@ -1329,21 +1441,44 @@ public final class Ztp {
             @java.lang.Override
             public ztp.Ztp.DeviceRole buildPartial() {
                 ztp.Ztp.DeviceRole result = new ztp.Ztp.DeviceRole(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (devRoleIdBuilder_ == null) {
+                    result.devRoleId_ = devRoleId_;
+                } else {
+                    result.devRoleId_ = devRoleIdBuilder_.build();
                 }
+                result.devRoleType_ = devRoleType_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(ztp.Ztp.DeviceRole result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.devRoleId_ = devRoleIdBuilder_ == null ? devRoleId_ : devRoleIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.devRoleType_ = devRoleType_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -1365,7 +1500,7 @@ public final class Ztp {
                 if (other.devRoleType_ != 0) {
                     setDevRoleTypeValue(other.getDevRoleTypeValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -1377,54 +1512,20 @@ public final class Ztp {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                ztp.Ztp.DeviceRole parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getDevRoleIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    devRoleType_ = input.readEnum();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (ztp.Ztp.DeviceRole) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private ztp.Ztp.DeviceRoleId devRoleId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> devRoleIdBuilder_;
@@ -1434,7 +1535,7 @@ public final class Ztp {
              * @return Whether the devRoleId field is set.
              */
             public boolean hasDevRoleId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return devRoleIdBuilder_ != null || devRoleId_ != null;
             }
 
             /**
@@ -1458,11 +1559,10 @@ public final class Ztp {
                         throw new NullPointerException();
                     }
                     devRoleId_ = value;
+                    onChanged();
                 } else {
                     devRoleIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -1472,11 +1572,10 @@ public final class Ztp {
             public Builder setDevRoleId(ztp.Ztp.DeviceRoleId.Builder builderForValue) {
                 if (devRoleIdBuilder_ == null) {
                     devRoleId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     devRoleIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -1485,16 +1584,15 @@ public final class Ztp {
              */
             public Builder mergeDevRoleId(ztp.Ztp.DeviceRoleId value) {
                 if (devRoleIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && devRoleId_ != null && devRoleId_ != ztp.Ztp.DeviceRoleId.getDefaultInstance()) {
-                        getDevRoleIdBuilder().mergeFrom(value);
+                    if (devRoleId_ != null) {
+                        devRoleId_ = ztp.Ztp.DeviceRoleId.newBuilder(devRoleId_).mergeFrom(value).buildPartial();
                     } else {
                         devRoleId_ = value;
                     }
+                    onChanged();
                 } else {
                     devRoleIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -1502,13 +1600,13 @@ public final class Ztp {
              * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
              */
             public Builder clearDevRoleId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                devRoleId_ = null;
-                if (devRoleIdBuilder_ != null) {
-                    devRoleIdBuilder_.dispose();
+                if (devRoleIdBuilder_ == null) {
+                    devRoleId_ = null;
+                    onChanged();
+                } else {
+                    devRoleId_ = null;
                     devRoleIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -1516,7 +1614,6 @@ public final class Ztp {
              * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
              */
             public ztp.Ztp.DeviceRoleId.Builder getDevRoleIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDevRoleIdFieldBuilder().getBuilder();
             }
@@ -1561,7 +1658,6 @@ public final class Ztp {
              */
             public Builder setDevRoleTypeValue(int value) {
                 devRoleType_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -1572,7 +1668,8 @@ public final class Ztp {
              */
             @java.lang.Override
             public ztp.Ztp.DeviceRoleType getDevRoleType() {
-                ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.forNumber(devRoleType_);
+                @SuppressWarnings("deprecation")
+                ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.valueOf(devRoleType_);
                 return result == null ? ztp.Ztp.DeviceRoleType.UNRECOGNIZED : result;
             }
 
@@ -1585,7 +1682,6 @@ public final class Ztp {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000002;
                 devRoleType_ = value.getNumber();
                 onChanged();
                 return this;
@@ -1596,7 +1692,6 @@ public final class Ztp {
              * @return This builder for chaining.
              */
             public Builder clearDevRoleType() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 devRoleType_ = 0;
                 onChanged();
                 return this;
@@ -1629,17 +1724,7 @@ public final class Ztp {
 
             @java.lang.Override
             public DeviceRole parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceRole(input, extensionRegistry);
             }
         };
 
@@ -1718,6 +1803,70 @@ public final class Ztp {
             return new DeviceRoleConfig();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceRoleConfig(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                ztp.Ztp.DeviceRole.Builder subBuilder = null;
+                                if (devRole_ != null) {
+                                    subBuilder = devRole_.toBuilder();
+                                }
+                                devRole_ = input.readMessage(ztp.Ztp.DeviceRole.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(devRole_);
+                                    devRole_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 18:
+                            {
+                                context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
+                                if (devConfig_ != null) {
+                                    subBuilder = devConfig_.toBuilder();
+                                }
+                                devConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(devConfig_);
+                                    devConfig_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_descriptor;
         }
@@ -1754,7 +1903,7 @@ public final class Ztp {
          */
         @java.lang.Override
         public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder() {
-            return devRole_ == null ? ztp.Ztp.DeviceRole.getDefaultInstance() : devRole_;
+            return getDevRole();
         }
 
         public static final int DEVCONFIG_FIELD_NUMBER = 2;
@@ -1784,7 +1933,7 @@ public final class Ztp {
          */
         @java.lang.Override
         public context.ContextOuterClass.DeviceConfigOrBuilder getDevConfigOrBuilder() {
-            return devConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : devConfig_;
+            return getDevConfig();
         }
 
         private byte memoizedIsInitialized = -1;
@@ -1808,7 +1957,7 @@ public final class Ztp {
             if (devConfig_ != null) {
                 output.writeMessage(2, getDevConfig());
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -1823,7 +1972,7 @@ public final class Ztp {
             if (devConfig_ != null) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDevConfig());
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -1849,7 +1998,7 @@ public final class Ztp {
                 if (!getDevConfig().equals(other.getDevConfig()))
                     return false;
             }
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -1869,7 +2018,7 @@ public final class Ztp {
                 hash = (37 * hash) + DEVCONFIG_FIELD_NUMBER;
                 hash = (53 * hash) + getDevConfig().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -1963,24 +2112,32 @@ public final class Ztp {
 
             // Construct using ztp.Ztp.DeviceRoleConfig.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                devRole_ = null;
-                if (devRoleBuilder_ != null) {
-                    devRoleBuilder_.dispose();
+                if (devRoleBuilder_ == null) {
+                    devRole_ = null;
+                } else {
+                    devRole_ = null;
                     devRoleBuilder_ = null;
                 }
-                devConfig_ = null;
-                if (devConfigBuilder_ != null) {
-                    devConfigBuilder_.dispose();
+                if (devConfigBuilder_ == null) {
+                    devConfig_ = null;
+                } else {
+                    devConfig_ = null;
                     devConfigBuilder_ = null;
                 }
                 return this;
@@ -2008,21 +2165,48 @@ public final class Ztp {
             @java.lang.Override
             public ztp.Ztp.DeviceRoleConfig buildPartial() {
                 ztp.Ztp.DeviceRoleConfig result = new ztp.Ztp.DeviceRoleConfig(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (devRoleBuilder_ == null) {
+                    result.devRole_ = devRole_;
+                } else {
+                    result.devRole_ = devRoleBuilder_.build();
+                }
+                if (devConfigBuilder_ == null) {
+                    result.devConfig_ = devConfig_;
+                } else {
+                    result.devConfig_ = devConfigBuilder_.build();
                 }
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(ztp.Ztp.DeviceRoleConfig result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.devRole_ = devRoleBuilder_ == null ? devRole_ : devRoleBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.devConfig_ = devConfigBuilder_ == null ? devConfig_ : devConfigBuilder_.build();
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -2044,7 +2228,7 @@ public final class Ztp {
                 if (other.hasDevConfig()) {
                     mergeDevConfig(other.getDevConfig());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -2056,54 +2240,20 @@ public final class Ztp {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                ztp.Ztp.DeviceRoleConfig parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getDevRoleFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 18:
-                                {
-                                    input.readMessage(getDevConfigFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 18
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (ztp.Ztp.DeviceRoleConfig) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private ztp.Ztp.DeviceRole devRole_;
 
             private com.google.protobuf.SingleFieldBuilderV3<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder> devRoleBuilder_;
@@ -2113,7 +2263,7 @@ public final class Ztp {
              * @return Whether the devRole field is set.
              */
             public boolean hasDevRole() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return devRoleBuilder_ != null || devRole_ != null;
             }
 
             /**
@@ -2137,11 +2287,10 @@ public final class Ztp {
                         throw new NullPointerException();
                     }
                     devRole_ = value;
+                    onChanged();
                 } else {
                     devRoleBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -2151,11 +2300,10 @@ public final class Ztp {
             public Builder setDevRole(ztp.Ztp.DeviceRole.Builder builderForValue) {
                 if (devRoleBuilder_ == null) {
                     devRole_ = builderForValue.build();
+                    onChanged();
                 } else {
                     devRoleBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -2164,16 +2312,15 @@ public final class Ztp {
              */
             public Builder mergeDevRole(ztp.Ztp.DeviceRole value) {
                 if (devRoleBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && devRole_ != null && devRole_ != ztp.Ztp.DeviceRole.getDefaultInstance()) {
-                        getDevRoleBuilder().mergeFrom(value);
+                    if (devRole_ != null) {
+                        devRole_ = ztp.Ztp.DeviceRole.newBuilder(devRole_).mergeFrom(value).buildPartial();
                     } else {
                         devRole_ = value;
                     }
+                    onChanged();
                 } else {
                     devRoleBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -2181,13 +2328,13 @@ public final class Ztp {
              * <code>.ztp.DeviceRole devRole = 1;</code>
              */
             public Builder clearDevRole() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                devRole_ = null;
-                if (devRoleBuilder_ != null) {
-                    devRoleBuilder_.dispose();
+                if (devRoleBuilder_ == null) {
+                    devRole_ = null;
+                    onChanged();
+                } else {
+                    devRole_ = null;
                     devRoleBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2195,7 +2342,6 @@ public final class Ztp {
              * <code>.ztp.DeviceRole devRole = 1;</code>
              */
             public ztp.Ztp.DeviceRole.Builder getDevRoleBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDevRoleFieldBuilder().getBuilder();
             }
@@ -2231,7 +2377,7 @@ public final class Ztp {
              * @return Whether the devConfig field is set.
              */
             public boolean hasDevConfig() {
-                return ((bitField0_ & 0x00000002) != 0);
+                return devConfigBuilder_ != null || devConfig_ != null;
             }
 
             /**
@@ -2255,11 +2401,10 @@ public final class Ztp {
                         throw new NullPointerException();
                     }
                     devConfig_ = value;
+                    onChanged();
                 } else {
                     devConfigBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -2269,11 +2414,10 @@ public final class Ztp {
             public Builder setDevConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
                 if (devConfigBuilder_ == null) {
                     devConfig_ = builderForValue.build();
+                    onChanged();
                 } else {
                     devConfigBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -2282,16 +2426,15 @@ public final class Ztp {
              */
             public Builder mergeDevConfig(context.ContextOuterClass.DeviceConfig value) {
                 if (devConfigBuilder_ == null) {
-                    if (((bitField0_ & 0x00000002) != 0) && devConfig_ != null && devConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) {
-                        getDevConfigBuilder().mergeFrom(value);
+                    if (devConfig_ != null) {
+                        devConfig_ = context.ContextOuterClass.DeviceConfig.newBuilder(devConfig_).mergeFrom(value).buildPartial();
                     } else {
                         devConfig_ = value;
                     }
+                    onChanged();
                 } else {
                     devConfigBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000002;
-                onChanged();
                 return this;
             }
 
@@ -2299,13 +2442,13 @@ public final class Ztp {
              * <code>.context.DeviceConfig devConfig = 2;</code>
              */
             public Builder clearDevConfig() {
-                bitField0_ = (bitField0_ & ~0x00000002);
-                devConfig_ = null;
-                if (devConfigBuilder_ != null) {
-                    devConfigBuilder_.dispose();
+                if (devConfigBuilder_ == null) {
+                    devConfig_ = null;
+                    onChanged();
+                } else {
+                    devConfig_ = null;
                     devConfigBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -2313,7 +2456,6 @@ public final class Ztp {
              * <code>.context.DeviceConfig devConfig = 2;</code>
              */
             public context.ContextOuterClass.DeviceConfig.Builder getDevConfigBuilder() {
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return getDevConfigFieldBuilder().getBuilder();
             }
@@ -2367,17 +2509,7 @@ public final class Ztp {
 
             @java.lang.Override
             public DeviceRoleConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceRoleConfig(input, extensionRegistry);
             }
         };
 
@@ -2448,6 +2580,57 @@ public final class Ztp {
             return new DeviceRoleList();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceRoleList(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    devRole_ = new java.util.ArrayList<ztp.Ztp.DeviceRole>();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                devRole_.add(input.readMessage(ztp.Ztp.DeviceRole.parser(), extensionRegistry));
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    devRole_ = java.util.Collections.unmodifiableList(devRole_);
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return ztp.Ztp.internal_static_ztp_DeviceRoleList_descriptor;
         }
@@ -2459,7 +2642,6 @@ public final class Ztp {
 
         public static final int DEVROLE_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
         private java.util.List<ztp.Ztp.DeviceRole> devRole_;
 
         /**
@@ -2520,7 +2702,7 @@ public final class Ztp {
             for (int i = 0; i < devRole_.size(); i++) {
                 output.writeMessage(1, devRole_.get(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -2532,7 +2714,7 @@ public final class Ztp {
             for (int i = 0; i < devRole_.size(); i++) {
                 size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, devRole_.get(i));
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -2548,7 +2730,7 @@ public final class Ztp {
             ztp.Ztp.DeviceRoleList other = (ztp.Ztp.DeviceRoleList) obj;
             if (!getDevRoleList().equals(other.getDevRoleList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -2564,7 +2746,7 @@ public final class Ztp {
                 hash = (37 * hash) + DEVROLE_FIELD_NUMBER;
                 hash = (53 * hash) + getDevRoleList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -2658,23 +2840,29 @@ public final class Ztp {
 
             // Construct using ztp.Ztp.DeviceRoleList.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                    getDevRoleFieldBuilder();
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
                 if (devRoleBuilder_ == null) {
                     devRole_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 } else {
-                    devRole_ = null;
                     devRoleBuilder_.clear();
                 }
-                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -2700,15 +2888,7 @@ public final class Ztp {
             @java.lang.Override
             public ztp.Ztp.DeviceRoleList buildPartial() {
                 ztp.Ztp.DeviceRoleList result = new ztp.Ztp.DeviceRoleList(this);
-                buildPartialRepeatedFields(result);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
-                }
-                onBuilt();
-                return result;
-            }
-
-            private void buildPartialRepeatedFields(ztp.Ztp.DeviceRoleList result) {
+                int from_bitField0_ = bitField0_;
                 if (devRoleBuilder_ == null) {
                     if (((bitField0_ & 0x00000001) != 0)) {
                         devRole_ = java.util.Collections.unmodifiableList(devRole_);
@@ -2718,10 +2898,38 @@ public final class Ztp {
                 } else {
                     result.devRole_ = devRoleBuilder_.build();
                 }
+                onBuilt();
+                return result;
             }
 
-            private void buildPartial0(ztp.Ztp.DeviceRoleList result) {
-                int from_bitField0_ = bitField0_;
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -2761,7 +2969,7 @@ public final class Ztp {
                         }
                     }
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -2773,47 +2981,17 @@ public final class Ztp {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                ztp.Ztp.DeviceRoleList parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    ztp.Ztp.DeviceRole m = input.readMessage(ztp.Ztp.DeviceRole.parser(), extensionRegistry);
-                                    if (devRoleBuilder_ == null) {
-                                        ensureDevRoleIsMutable();
-                                        devRole_.add(m);
-                                    } else {
-                                        devRoleBuilder_.addMessage(m);
-                                    }
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (ztp.Ztp.DeviceRoleList) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
@@ -3083,17 +3261,7 @@ public final class Ztp {
 
             @java.lang.Override
             public DeviceRoleList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceRoleList(input, extensionRegistry);
             }
         };
 
@@ -3168,6 +3336,63 @@ public final class Ztp {
             return new DeviceRoleState();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceRoleState(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                ztp.Ztp.DeviceRoleId.Builder subBuilder = null;
+                                if (devRoleId_ != null) {
+                                    subBuilder = devRoleId_.toBuilder();
+                                }
+                                devRoleId_ = input.readMessage(ztp.Ztp.DeviceRoleId.parser(), extensionRegistry);
+                                if (subBuilder != null) {
+                                    subBuilder.mergeFrom(devRoleId_);
+                                    devRoleId_ = subBuilder.buildPartial();
+                                }
+                                break;
+                            }
+                        case 16:
+                            {
+                                int rawValue = input.readEnum();
+                                devRoleState_ = rawValue;
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return ztp.Ztp.internal_static_ztp_DeviceRoleState_descriptor;
         }
@@ -3204,12 +3429,12 @@ public final class Ztp {
          */
         @java.lang.Override
         public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
-            return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
+            return getDevRoleId();
         }
 
         public static final int DEVROLESTATE_FIELD_NUMBER = 2;
 
-        private int devRoleState_ = 0;
+        private int devRoleState_;
 
         /**
          * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
@@ -3226,7 +3451,8 @@ public final class Ztp {
          */
         @java.lang.Override
         public ztp.Ztp.ZtpDeviceState getDevRoleState() {
-            ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.forNumber(devRoleState_);
+            @SuppressWarnings("deprecation")
+            ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.valueOf(devRoleState_);
             return result == null ? ztp.Ztp.ZtpDeviceState.UNRECOGNIZED : result;
         }
 
@@ -3251,7 +3477,7 @@ public final class Ztp {
             if (devRoleState_ != ztp.Ztp.ZtpDeviceState.ZTP_DEV_STATE_UNDEFINED.getNumber()) {
                 output.writeEnum(2, devRoleState_);
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -3266,7 +3492,7 @@ public final class Ztp {
             if (devRoleState_ != ztp.Ztp.ZtpDeviceState.ZTP_DEV_STATE_UNDEFINED.getNumber()) {
                 size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, devRoleState_);
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -3288,7 +3514,7 @@ public final class Ztp {
             }
             if (devRoleState_ != other.devRoleState_)
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -3306,7 +3532,7 @@ public final class Ztp {
             }
             hash = (37 * hash) + DEVROLESTATE_FIELD_NUMBER;
             hash = (53 * hash) + devRoleState_;
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -3400,19 +3626,26 @@ public final class Ztp {
 
             // Construct using ztp.Ztp.DeviceRoleState.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                devRoleId_ = null;
-                if (devRoleIdBuilder_ != null) {
-                    devRoleIdBuilder_.dispose();
+                if (devRoleIdBuilder_ == null) {
+                    devRoleId_ = null;
+                } else {
+                    devRoleId_ = null;
                     devRoleIdBuilder_ = null;
                 }
                 devRoleState_ = 0;
@@ -3441,21 +3674,44 @@ public final class Ztp {
             @java.lang.Override
             public ztp.Ztp.DeviceRoleState buildPartial() {
                 ztp.Ztp.DeviceRoleState result = new ztp.Ztp.DeviceRoleState(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                if (devRoleIdBuilder_ == null) {
+                    result.devRoleId_ = devRoleId_;
+                } else {
+                    result.devRoleId_ = devRoleIdBuilder_.build();
                 }
+                result.devRoleState_ = devRoleState_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(ztp.Ztp.DeviceRoleState result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    result.devRoleId_ = devRoleIdBuilder_ == null ? devRoleId_ : devRoleIdBuilder_.build();
-                }
-                if (((from_bitField0_ & 0x00000002) != 0)) {
-                    result.devRoleState_ = devRoleState_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -3477,7 +3733,7 @@ public final class Ztp {
                 if (other.devRoleState_ != 0) {
                     setDevRoleStateValue(other.getDevRoleStateValue());
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -3489,54 +3745,20 @@ public final class Ztp {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                ztp.Ztp.DeviceRoleState parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    input.readMessage(getDevRoleIdFieldBuilder().getBuilder(), extensionRegistry);
-                                    bitField0_ |= 0x00000001;
-                                    break;
-                                }
-                            // case 10
-                            case 16:
-                                {
-                                    devRoleState_ = input.readEnum();
-                                    bitField0_ |= 0x00000002;
-                                    break;
-                                }
-                            // case 16
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (ztp.Ztp.DeviceRoleState) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
-            private int bitField0_;
-
             private ztp.Ztp.DeviceRoleId devRoleId_;
 
             private com.google.protobuf.SingleFieldBuilderV3<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> devRoleIdBuilder_;
@@ -3546,7 +3768,7 @@ public final class Ztp {
              * @return Whether the devRoleId field is set.
              */
             public boolean hasDevRoleId() {
-                return ((bitField0_ & 0x00000001) != 0);
+                return devRoleIdBuilder_ != null || devRoleId_ != null;
             }
 
             /**
@@ -3570,11 +3792,10 @@ public final class Ztp {
                         throw new NullPointerException();
                     }
                     devRoleId_ = value;
+                    onChanged();
                 } else {
                     devRoleIdBuilder_.setMessage(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3584,11 +3805,10 @@ public final class Ztp {
             public Builder setDevRoleId(ztp.Ztp.DeviceRoleId.Builder builderForValue) {
                 if (devRoleIdBuilder_ == null) {
                     devRoleId_ = builderForValue.build();
+                    onChanged();
                 } else {
                     devRoleIdBuilder_.setMessage(builderForValue.build());
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3597,16 +3817,15 @@ public final class Ztp {
              */
             public Builder mergeDevRoleId(ztp.Ztp.DeviceRoleId value) {
                 if (devRoleIdBuilder_ == null) {
-                    if (((bitField0_ & 0x00000001) != 0) && devRoleId_ != null && devRoleId_ != ztp.Ztp.DeviceRoleId.getDefaultInstance()) {
-                        getDevRoleIdBuilder().mergeFrom(value);
+                    if (devRoleId_ != null) {
+                        devRoleId_ = ztp.Ztp.DeviceRoleId.newBuilder(devRoleId_).mergeFrom(value).buildPartial();
                     } else {
                         devRoleId_ = value;
                     }
+                    onChanged();
                 } else {
                     devRoleIdBuilder_.mergeFrom(value);
                 }
-                bitField0_ |= 0x00000001;
-                onChanged();
                 return this;
             }
 
@@ -3614,13 +3833,13 @@ public final class Ztp {
              * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
              */
             public Builder clearDevRoleId() {
-                bitField0_ = (bitField0_ & ~0x00000001);
-                devRoleId_ = null;
-                if (devRoleIdBuilder_ != null) {
-                    devRoleIdBuilder_.dispose();
+                if (devRoleIdBuilder_ == null) {
+                    devRoleId_ = null;
+                    onChanged();
+                } else {
+                    devRoleId_ = null;
                     devRoleIdBuilder_ = null;
                 }
-                onChanged();
                 return this;
             }
 
@@ -3628,7 +3847,6 @@ public final class Ztp {
              * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
              */
             public ztp.Ztp.DeviceRoleId.Builder getDevRoleIdBuilder() {
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return getDevRoleIdFieldBuilder().getBuilder();
             }
@@ -3673,7 +3891,6 @@ public final class Ztp {
              */
             public Builder setDevRoleStateValue(int value) {
                 devRoleState_ = value;
-                bitField0_ |= 0x00000002;
                 onChanged();
                 return this;
             }
@@ -3684,7 +3901,8 @@ public final class Ztp {
              */
             @java.lang.Override
             public ztp.Ztp.ZtpDeviceState getDevRoleState() {
-                ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.forNumber(devRoleState_);
+                @SuppressWarnings("deprecation")
+                ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.valueOf(devRoleState_);
                 return result == null ? ztp.Ztp.ZtpDeviceState.UNRECOGNIZED : result;
             }
 
@@ -3697,7 +3915,6 @@ public final class Ztp {
                 if (value == null) {
                     throw new NullPointerException();
                 }
-                bitField0_ |= 0x00000002;
                 devRoleState_ = value.getNumber();
                 onChanged();
                 return this;
@@ -3708,7 +3925,6 @@ public final class Ztp {
              * @return This builder for chaining.
              */
             public Builder clearDevRoleState() {
-                bitField0_ = (bitField0_ & ~0x00000002);
                 devRoleState_ = 0;
                 onChanged();
                 return this;
@@ -3741,17 +3957,7 @@ public final class Ztp {
 
             @java.lang.Override
             public DeviceRoleState parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceRoleState(input, extensionRegistry);
             }
         };
 
@@ -3814,7 +4020,7 @@ public final class Ztp {
         }
 
         private DeviceDeletionResult() {
-            deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
+            deleted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
         }
 
         @java.lang.Override
@@ -3823,6 +4029,58 @@ public final class Ztp {
             return new DeviceDeletionResult();
         }
 
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+            return this.unknownFields;
+        }
+
+        private DeviceDeletionResult(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            this();
+            if (extensionRegistry == null) {
+                throw new java.lang.NullPointerException();
+            }
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+                boolean done = false;
+                while (!done) {
+                    int tag = input.readTag();
+                    switch(tag) {
+                        case 0:
+                            done = true;
+                            break;
+                        case 10:
+                            {
+                                java.lang.String s = input.readStringRequireUtf8();
+                                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                                    deleted_ = new com.google.protobuf.LazyStringArrayList();
+                                    mutable_bitField0_ |= 0x00000001;
+                                }
+                                deleted_.add(s);
+                                break;
+                            }
+                        default:
+                            {
+                                if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                                    done = true;
+                                }
+                                break;
+                            }
+                    }
+                }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+                throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+            } finally {
+                if (((mutable_bitField0_ & 0x00000001) != 0)) {
+                    deleted_ = deleted_.getUnmodifiableView();
+                }
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+            }
+        }
+
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_descriptor;
         }
@@ -3834,8 +4092,7 @@ public final class Ztp {
 
         public static final int DELETED_FIELD_NUMBER = 1;
 
-        @SuppressWarnings("serial")
-        private com.google.protobuf.LazyStringArrayList deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
+        private com.google.protobuf.LazyStringList deleted_;
 
         /**
          * <code>repeated string deleted = 1;</code>
@@ -3889,7 +4146,7 @@ public final class Ztp {
             for (int i = 0; i < deleted_.size(); i++) {
                 com.google.protobuf.GeneratedMessageV3.writeString(output, 1, deleted_.getRaw(i));
             }
-            getUnknownFields().writeTo(output);
+            unknownFields.writeTo(output);
         }
 
         @java.lang.Override
@@ -3906,7 +4163,7 @@ public final class Ztp {
                 size += dataSize;
                 size += 1 * getDeletedList().size();
             }
-            size += getUnknownFields().getSerializedSize();
+            size += unknownFields.getSerializedSize();
             memoizedSize = size;
             return size;
         }
@@ -3922,7 +4179,7 @@ public final class Ztp {
             ztp.Ztp.DeviceDeletionResult other = (ztp.Ztp.DeviceDeletionResult) obj;
             if (!getDeletedList().equals(other.getDeletedList()))
                 return false;
-            if (!getUnknownFields().equals(other.getUnknownFields()))
+            if (!unknownFields.equals(other.unknownFields))
                 return false;
             return true;
         }
@@ -3938,7 +4195,7 @@ public final class Ztp {
                 hash = (37 * hash) + DELETED_FIELD_NUMBER;
                 hash = (53 * hash) + getDeletedList().hashCode();
             }
-            hash = (29 * hash) + getUnknownFields().hashCode();
+            hash = (29 * hash) + unknownFields.hashCode();
             memoizedHashCode = hash;
             return hash;
         }
@@ -4032,17 +4289,24 @@ public final class Ztp {
 
             // Construct using ztp.Ztp.DeviceDeletionResult.newBuilder()
             private Builder() {
+                maybeForceBuilderInitialization();
             }
 
             private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                 super(parent);
+                maybeForceBuilderInitialization();
+            }
+
+            private void maybeForceBuilderInitialization() {
+                if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+                }
             }
 
             @java.lang.Override
             public Builder clear() {
                 super.clear();
-                bitField0_ = 0;
-                deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
+                deleted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+                bitField0_ = (bitField0_ & ~0x00000001);
                 return this;
             }
 
@@ -4068,19 +4332,44 @@ public final class Ztp {
             @java.lang.Override
             public ztp.Ztp.DeviceDeletionResult buildPartial() {
                 ztp.Ztp.DeviceDeletionResult result = new ztp.Ztp.DeviceDeletionResult(this);
-                if (bitField0_ != 0) {
-                    buildPartial0(result);
+                int from_bitField0_ = bitField0_;
+                if (((bitField0_ & 0x00000001) != 0)) {
+                    deleted_ = deleted_.getUnmodifiableView();
+                    bitField0_ = (bitField0_ & ~0x00000001);
                 }
+                result.deleted_ = deleted_;
                 onBuilt();
                 return result;
             }
 
-            private void buildPartial0(ztp.Ztp.DeviceDeletionResult result) {
-                int from_bitField0_ = bitField0_;
-                if (((from_bitField0_ & 0x00000001) != 0)) {
-                    deleted_.makeImmutable();
-                    result.deleted_ = deleted_;
-                }
+            @java.lang.Override
+            public Builder clone() {
+                return super.clone();
+            }
+
+            @java.lang.Override
+            public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.setField(field, value);
+            }
+
+            @java.lang.Override
+            public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+                return super.clearField(field);
+            }
+
+            @java.lang.Override
+            public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+                return super.clearOneof(oneof);
+            }
+
+            @java.lang.Override
+            public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
+                return super.setRepeatedField(field, index, value);
+            }
+
+            @java.lang.Override
+            public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+                return super.addRepeatedField(field, value);
             }
 
             @java.lang.Override
@@ -4099,14 +4388,14 @@ public final class Ztp {
                 if (!other.deleted_.isEmpty()) {
                     if (deleted_.isEmpty()) {
                         deleted_ = other.deleted_;
-                        bitField0_ |= 0x00000001;
+                        bitField0_ = (bitField0_ & ~0x00000001);
                     } else {
                         ensureDeletedIsMutable();
                         deleted_.addAll(other.deleted_);
                     }
                     onChanged();
                 }
-                this.mergeUnknownFields(other.getUnknownFields());
+                this.mergeUnknownFields(other.unknownFields);
                 onChanged();
                 return this;
             }
@@ -4118,55 +4407,29 @@ public final class Ztp {
 
             @java.lang.Override
             public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
-                if (extensionRegistry == null) {
-                    throw new java.lang.NullPointerException();
-                }
+                ztp.Ztp.DeviceDeletionResult parsedMessage = null;
                 try {
-                    boolean done = false;
-                    while (!done) {
-                        int tag = input.readTag();
-                        switch(tag) {
-                            case 0:
-                                done = true;
-                                break;
-                            case 10:
-                                {
-                                    java.lang.String s = input.readStringRequireUtf8();
-                                    ensureDeletedIsMutable();
-                                    deleted_.add(s);
-                                    break;
-                                }
-                            // case 10
-                            default:
-                                {
-                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
-                                        // was an endgroup tag
-                                        done = true;
-                                    }
-                                    break;
-                                }
-                        }
-                        // switch (tag)
-                    }
-                    // while (!done)
+                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                 } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    parsedMessage = (ztp.Ztp.DeviceDeletionResult) e.getUnfinishedMessage();
                     throw e.unwrapIOException();
                 } finally {
-                    onChanged();
+                    if (parsedMessage != null) {
+                        mergeFrom(parsedMessage);
+                    }
                 }
-                // finally
                 return this;
             }
 
             private int bitField0_;
 
-            private com.google.protobuf.LazyStringArrayList deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
+            private com.google.protobuf.LazyStringList deleted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
 
             private void ensureDeletedIsMutable() {
-                if (!deleted_.isModifiable()) {
+                if (!((bitField0_ & 0x00000001) != 0)) {
                     deleted_ = new com.google.protobuf.LazyStringArrayList(deleted_);
+                    bitField0_ |= 0x00000001;
                 }
-                bitField0_ |= 0x00000001;
             }
 
             /**
@@ -4174,8 +4437,7 @@ public final class Ztp {
              * @return A list containing the deleted.
              */
             public com.google.protobuf.ProtocolStringList getDeletedList() {
-                deleted_.makeImmutable();
-                return deleted_;
+                return deleted_.getUnmodifiableView();
             }
 
             /**
@@ -4216,7 +4478,6 @@ public final class Ztp {
                 }
                 ensureDeletedIsMutable();
                 deleted_.set(index, value);
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -4232,7 +4493,6 @@ public final class Ztp {
                 }
                 ensureDeletedIsMutable();
                 deleted_.add(value);
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -4245,7 +4505,6 @@ public final class Ztp {
             public Builder addAllDeleted(java.lang.Iterable<java.lang.String> values) {
                 ensureDeletedIsMutable();
                 com.google.protobuf.AbstractMessageLite.Builder.addAll(values, deleted_);
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -4255,9 +4514,8 @@ public final class Ztp {
              * @return This builder for chaining.
              */
             public Builder clearDeleted() {
-                deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
+                deleted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
                 bitField0_ = (bitField0_ & ~0x00000001);
-                ;
                 onChanged();
                 return this;
             }
@@ -4274,7 +4532,6 @@ public final class Ztp {
                 checkByteStringIsUtf8(value);
                 ensureDeletedIsMutable();
                 deleted_.add(value);
-                bitField0_ |= 0x00000001;
                 onChanged();
                 return this;
             }
@@ -4306,17 +4563,7 @@ public final class Ztp {
 
             @java.lang.Override
             public DeviceDeletionResult parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
-                Builder builder = newBuilder();
-                try {
-                    builder.mergeFrom(input, extensionRegistry);
-                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-                    throw e.setUnfinishedMessage(builder.buildPartial());
-                } catch (com.google.protobuf.UninitializedMessageException e) {
-                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
-                } catch (java.io.IOException e) {
-                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
-                }
-                return builder.buildPartial();
+                return new DeviceDeletionResult(input, extensionRegistry);
             }
         };
 
diff --git a/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java
index e989a3637bf261c9c5557f048f173a1a3a225f21..796e4bcee7c43597555f826e21f430bc4c324706 100644
--- a/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java
@@ -4,8 +4,7 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: ztp.proto")
-@io.grpc.stub.annotations.GrpcGenerated
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.38.1)", comments = "Source: ztp.proto")
 public final class ZtpServiceGrpc {
 
     private ZtpServiceGrpc() {
@@ -148,58 +147,51 @@ public final class ZtpServiceGrpc {
 
     /**
      */
-    public interface AsyncService {
+    public static abstract class ZtpServiceImplBase implements io.grpc.BindableService {
 
         /**
          */
-        default void ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole> responseObserver) {
+        public void ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpGetDeviceRoleMethod(), responseObserver);
         }
 
         /**
          */
-        default void ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList> responseObserver) {
+        public void ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpGetDeviceRolesByDeviceIdMethod(), responseObserver);
         }
 
         /**
          */
-        default void ztpAdd(ztp.Ztp.DeviceRole request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+        public void ztpAdd(ztp.Ztp.DeviceRole request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpAddMethod(), responseObserver);
         }
 
         /**
          */
-        default void ztpUpdate(ztp.Ztp.DeviceRoleConfig request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+        public void ztpUpdate(ztp.Ztp.DeviceRoleConfig request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpUpdateMethod(), responseObserver);
         }
 
         /**
          */
-        default void ztpDelete(ztp.Ztp.DeviceRole request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+        public void ztpDelete(ztp.Ztp.DeviceRole request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpDeleteMethod(), responseObserver);
         }
 
         /**
          */
-        default void ztpDeleteAll(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult> responseObserver) {
+        public void ztpDeleteAll(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult> responseObserver) {
             io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpDeleteAllMethod(), responseObserver);
         }
-    }
-
-    /**
-     * Base class for the server implementation of the service ZtpService.
-     */
-    public static abstract class ZtpServiceImplBase implements io.grpc.BindableService, AsyncService {
 
         @java.lang.Override
         public io.grpc.ServerServiceDefinition bindService() {
-            return ZtpServiceGrpc.bindService(this);
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getZtpGetDeviceRoleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRole>(this, METHODID_ZTP_GET_DEVICE_ROLE))).addMethod(getZtpGetDeviceRolesByDeviceIdMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, ztp.Ztp.DeviceRoleList>(this, METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID))).addMethod(getZtpAddMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>(this, METHODID_ZTP_ADD))).addMethod(getZtpUpdateMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRoleConfig, ztp.Ztp.DeviceRoleState>(this, METHODID_ZTP_UPDATE))).addMethod(getZtpDeleteMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>(this, METHODID_ZTP_DELETE))).addMethod(getZtpDeleteAllMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, ztp.Ztp.DeviceDeletionResult>(this, METHODID_ZTP_DELETE_ALL))).build();
         }
     }
 
     /**
-     * A stub to allow clients to do asynchronous rpc calls to service ZtpService.
      */
     public static class ZtpServiceStub extends io.grpc.stub.AbstractAsyncStub<ZtpServiceStub> {
 
@@ -250,7 +242,6 @@ public final class ZtpServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do synchronous rpc calls to service ZtpService.
      */
     public static class ZtpServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<ZtpServiceBlockingStub> {
 
@@ -301,7 +292,6 @@ public final class ZtpServiceGrpc {
     }
 
     /**
-     * A stub to allow clients to do ListenableFuture-style rpc calls to service ZtpService.
      */
     public static class ZtpServiceFutureStub extends io.grpc.stub.AbstractFutureStub<ZtpServiceFutureStub> {
 
@@ -365,11 +355,11 @@ public final class ZtpServiceGrpc {
 
     private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
 
-        private final AsyncService serviceImpl;
+        private final ZtpServiceImplBase serviceImpl;
 
         private final int methodId;
 
-        MethodHandlers(AsyncService serviceImpl, int methodId) {
+        MethodHandlers(ZtpServiceImplBase serviceImpl, int methodId) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
         }
@@ -411,10 +401,6 @@ public final class ZtpServiceGrpc {
         }
     }
 
-    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
-        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getZtpGetDeviceRoleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRole>(service, METHODID_ZTP_GET_DEVICE_ROLE))).addMethod(getZtpGetDeviceRolesByDeviceIdMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, ztp.Ztp.DeviceRoleList>(service, METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID))).addMethod(getZtpAddMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>(service, METHODID_ZTP_ADD))).addMethod(getZtpUpdateMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRoleConfig, ztp.Ztp.DeviceRoleState>(service, METHODID_ZTP_UPDATE))).addMethod(getZtpDeleteMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>(service, METHODID_ZTP_DELETE))).addMethod(getZtpDeleteAllMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, ztp.Ztp.DeviceDeletionResult>(service, METHODID_ZTP_DELETE_ALL))).build();
-    }
-
     private static abstract class ZtpServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
         ZtpServiceBaseDescriptorSupplier() {
diff --git a/src/ztp/target/kubernetes/kubernetes.yml b/src/ztp/target/kubernetes/kubernetes.yml
index 9f78cd52fb8dd600370ba3c9951ab3507dd8b18a..95eca6ae29b9dd5f03ec73f9d9057f40b2fecfdf 100644
--- a/src/ztp/target/kubernetes/kubernetes.yml
+++ b/src/ztp/target/kubernetes/kubernetes.yml
@@ -3,8 +3,8 @@ apiVersion: v1
 kind: Service
 metadata:
   annotations:
-    app.quarkus.io/commit-id: 9fcc34bb0e7806d8a5ca5f75cbf3cb9e3358d756
-    app.quarkus.io/build-timestamp: 2024-02-15 - 11:02:55 +0000
+    app.quarkus.io/commit-id: 1fd284c73cf7d419152c8bc99644d0ed8955b355
+    app.quarkus.io/build-timestamp: 2024-04-08 - 17:36:46 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
@@ -17,6 +17,10 @@ metadata:
   name: ztpservice
 spec:
   ports:
+    - name: http
+      port: 9192
+      protocol: TCP
+      targetPort: 8080
     - name: https
       port: 443
       protocol: TCP
@@ -25,10 +29,6 @@ spec:
       port: 5050
       protocol: TCP
       targetPort: 5050
-    - name: http
-      port: 9192
-      protocol: TCP
-      targetPort: 8080
   selector:
     app.kubernetes.io/name: ztpservice
   type: ClusterIP
@@ -37,8 +37,8 @@ apiVersion: apps/v1
 kind: Deployment
 metadata:
   annotations:
-    app.quarkus.io/commit-id: 9fcc34bb0e7806d8a5ca5f75cbf3cb9e3358d756
-    app.quarkus.io/build-timestamp: 2024-02-15 - 11:02:55 +0000
+    app.quarkus.io/commit-id: 1fd284c73cf7d419152c8bc99644d0ed8955b355
+    app.quarkus.io/build-timestamp: 2024-04-08 - 17:36:46 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
@@ -46,8 +46,8 @@ metadata:
   labels:
     app: ztpservice
     app.kubernetes.io/managed-by: quarkus
-    app.kubernetes.io/version: 0.2.0
     app.kubernetes.io/name: ztpservice
+    app.kubernetes.io/version: 0.2.0
   name: ztpservice
 spec:
   replicas: 1
@@ -57,8 +57,8 @@ spec:
   template:
     metadata:
       annotations:
-        app.quarkus.io/commit-id: 9fcc34bb0e7806d8a5ca5f75cbf3cb9e3358d756
-        app.quarkus.io/build-timestamp: 2024-02-15 - 11:02:55 +0000
+        app.quarkus.io/commit-id: 1fd284c73cf7d419152c8bc99644d0ed8955b355
+        app.quarkus.io/build-timestamp: 2024-04-08 - 17:36:46 +0000
         prometheus.io/scrape: "true"
         prometheus.io/path: /q/metrics
         prometheus.io/port: "8080"
@@ -66,8 +66,8 @@ spec:
       labels:
         app: ztpservice
         app.kubernetes.io/managed-by: quarkus
-        app.kubernetes.io/version: 0.2.0
         app.kubernetes.io/name: ztpservice
+        app.kubernetes.io/version: 0.2.0
     spec:
       containers:
         - env:
@@ -75,10 +75,10 @@ spec:
               valueFrom:
                 fieldRef:
                   fieldPath: metadata.namespace
-            - name: CONTEXT_SERVICE_HOST
-              value: contextservice
             - name: DEVICE_SERVICE_HOST
               value: deviceservice
+            - name: CONTEXT_SERVICE_HOST
+              value: contextservice
           image: labs.etsi.org:5050/tfs/controller/ztp:0.2.0
           imagePullPolicy: Always
           livenessProbe:
@@ -93,15 +93,15 @@ spec:
             timeoutSeconds: 10
           name: ztpservice
           ports:
+            - containerPort: 8080
+              name: http
+              protocol: TCP
             - containerPort: 8443
               name: https
               protocol: TCP
             - containerPort: 5050
               name: grpc
               protocol: TCP
-            - containerPort: 8080
-              name: http
-              protocol: TCP
           readinessProbe:
             failureThreshold: 3
             httpGet: